-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
100 lines (80 loc) · 3.38 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '4.0.3' apply false
}
mainClassName = 'Main' // Change with your own class and package
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'jaci.gradle.EmbeddedTools' // Already used by GradleRIO so already imported
repositories {
mavenCentral()
flatDir {
dirs '/usr/local/frc/java', 'lib' // jar dependencies are kept in lib/
}
}
dependencies {
compile 'com.google.code.gson:gson:2.8.5'
compile name: 'wpiutil'
compile name: 'ntcore'
compile name: 'cscore'
compile name: 'cameraserver'
compile name: 'opencv-344'
compile name: 'wpilibj'
compile name: 'wpiHal'
}
//wrapper { // This was in the sample build.gradle but it does not seem to work in this context
//gradleVersion = '5.0'
//}
deploy {
targets {
target('rpi') {
directory = '/home/pi'
failOnMissing = false // Do not fail with error if cannot connect
timeout = 10 // Will search for pi maximum 10 seconds
locations {
ssh {
address = 'frcvision.local' // May also be raspberrypi.local. Change if different hostname or using static IP
user = 'pi' // The address, username and password are the defaults
password = 'raspberry'
}
}
}
}
artifacts {
all {
directory = '.'
targets << 'rpi'
}
commandArtifact('visionRW') {
command = '/usr/bin/sudo /bin/mount -o remount,rw / ' // Mount filesystem read/write before upload
dependsOn('deployVisionRWBootRpi')
}
commandArtifact('visionRWBoot') {
command = '/usr/bin/sudo /bin/mount -o remount,rw /boot '
}
fileArtifact('visionCombinedJar') {
file = file("build/libs/${project.name}-all.jar") // Single jar with all dependencies
filename = 'uploaded.jar' // Rename to upload.jar for compatibility with web upload runCamera
dependsOn('build') // Build project before deploy
dependsOn('deployVisionRWRpi')
}
fileArtifact('visionRunCamera') {
file = file('runCamera') // The default runCamera for uploaded jars
filename = 'runCamera.tmp' // Will be renamed later
dependsOn('deployVisionCombinedJarRpi') // Run only after jar file is uploaded
dependsOn('deployVisionRWRpi')
// Prepare runCamera script
postdeploy << { execute '/usr/bin/sudo /bin/chown 1000:1000 ./runCamera.tmp'}
postdeploy << { execute 'tr -d \'\\r\' < "runCamera.tmp" | tee "runCamera"'} // Fix newlines: No Windows carriage returns
postdeploy << { execute '/usr/bin/sudo /bin/chown 1000:1000 ./runCamera'}
postdeploy << { execute '/usr/bin/sudo /bin/chmod +x ./runCamera'} // Make executable
postdeploy << { execute '/usr/bin/sudo /bin/rm -fdr ./runCamera.tmp'} // Delete temp file
// Restart java program
postdeploy << { execute '/usr/bin/sudo /usr/bin/killall java'} // Kill existing code
postdeploy << { execute '/usr/bin/sudo /usr/bin/killall -9 java'}
postdeploy << { execute '/usr/bin/sudo /bin/bash ./runService'} // Run new code
postdeploy << { execute '/usr/bin/sudo /bin/mount -o remount,ro / ' } // Mount filesystem readonly for safe shutdown
postdeploy << { execute '/usr/bin/sudo /bin/mount -o remount,ro /boot ' }
}
}
}