|
1 | | -pipeline { |
2 | | - agent { |
3 | | - label '( linux || sw.os.linux ) && ( x64 || x86_64 || x86 || hw.arch.x86 ) && ( docker || sw.tool.docker ) && !test' |
4 | | - } |
5 | | - stages { |
6 | | - stage('Prepare environment') { |
7 | | - steps { |
8 | | - checkout scm |
9 | | - sh "rm -rf /home/jenkins/workspace/" + JOB_NAME + "/build" |
10 | | - sh "mkdir -p /home/jenkins/workspace/" + JOB_NAME + "/build" |
11 | | - sh "chmod 777 /home/jenkins/workspace/" + JOB_NAME + "/build" |
12 | | - } |
13 | | - } |
14 | | - stage('Build cross image') { |
15 | | - steps { |
16 | | - script { |
17 | | - try { |
18 | | - sh "docker logout" |
19 | | - } catch (err) {} |
20 | | - } |
21 | | - sh "docker build -t ev3dev-lang-java:jdk-stretch -f system/Dockerfile." + DOCKER_ARCH + " system " |
22 | | - sh "docker build -t ev3dev-lang-java:jdk-build -f scripts/Dockerfile scripts " |
23 | | - } |
| 1 | +// OpenJDK Jenkins build pipeline |
| 2 | + |
| 3 | +// docker linux build machine |
| 4 | +node('( linux || sw.os.linux ) && ( x64 || x86_64 || x86 || hw.arch.x86 ) && ( docker || sw.tool.docker ) && !test') { |
| 5 | + |
| 6 | + // our docker images |
| 7 | + def osImage |
| 8 | + def bldImage |
| 9 | + |
| 10 | + try { |
| 11 | + // clean and prepare |
| 12 | + cleanWs() |
| 13 | + checkout scm |
| 14 | + sh "mkdir -p ${env.WORKSPACE}/build && chmod 777 ${env.WORKSPACE}/build" |
| 15 | + |
| 16 | + // do the docker build stuff |
| 17 | + stage("Docker build") { |
| 18 | + osImage = docker.build("ev3dev-lang-java:jdk-stretch", "-f system/Dockerfile.${params.DOCKER_ARCH} ./system") |
| 19 | + bldImage = docker.build("ev3dev-lang-java:jdk-build", "-f scripts/Dockerfile ./scripts") |
24 | 20 | } |
| 21 | + |
| 22 | + // prepare run parameters |
| 23 | + String mountParams = "-v ${env.WORKSPACE}/build:/build" |
| 24 | + String envParams = "-e JDKVER=${params.JDKVER_VALUE} -e JDKVM=${params.JDKVM_VALUE} -e JDKPLATFORM=${params.JDKPLATFORM_VALUE} -e AUTOBUILD=1" |
| 25 | + |
25 | 26 | stage("JDK download") { |
26 | | - steps { |
27 | | - sh "docker run --rm -v /home/jenkins/workspace/" + JOB_NAME + "/build:/build \ |
28 | | - -e JDKVER='" + JDKVER_VALUE + "' -e JDKVM='" + JDKVM_VALUE + "' -e JDKPLATFORM='" + JDKPLATFORM_VALUE + "' -e AUTOBUILD='1' \ |
29 | | - ev3dev-lang-java:jdk-build /opt/jdkcross/prepare.sh" |
30 | | - sh "docker run --rm -v /home/jenkins/workspace/" + JOB_NAME + "/build:/build \ |
31 | | - -e JDKVER='" + JDKVER_VALUE + "' -e JDKVM='" + JDKVM_VALUE + "' -e JDKPLATFORM='" + JDKPLATFORM_VALUE + "' -e AUTOBUILD='1' \ |
32 | | - ev3dev-lang-java:jdk-build /opt/jdkcross/fetch.sh" |
| 27 | + bldImage.inside("${mountParams} ${envParams}") { |
| 28 | + sh "/opt/jdkcross/prepare.sh" |
| 29 | + sh "/opt/jdkcross/fetch.sh" |
33 | 30 | } |
34 | 31 | } |
| 32 | + |
35 | 33 | stage("JDK build") { |
36 | | - steps { |
37 | | - sh "docker run --rm -v /home/jenkins/workspace/" + JOB_NAME + "/build:/build \ |
38 | | - -e JDKVER='" + JDKVER_VALUE + "' -e JDKVM='" + JDKVM_VALUE + "' -e JDKPLATFORM='" + JDKPLATFORM_VALUE + "' -e AUTOBUILD='1' \ |
39 | | - ev3dev-lang-java:jdk-build /opt/jdkcross/build.sh" |
| 34 | + bldImage.inside("${mountParams} ${envParams}") { |
| 35 | + sh "/opt/jdkcross/build.sh" |
40 | 36 | } |
41 | 37 | } |
42 | | - stage("JDK packaging") { |
43 | | - steps { |
44 | | - sh "docker run --rm -v /home/jenkins/workspace/" + JOB_NAME + "/build:/build \ |
45 | | - -e JDKVER='" + JDKVER_VALUE + "' -e JDKVM='" + JDKVM_VALUE + "' -e JDKPLATFORM='" + JDKPLATFORM_VALUE + "' -e AUTOBUILD='1' \ |
46 | | - ev3dev-lang-java:jdk-build /opt/jdkcross/zip.sh" |
47 | 38 |
|
48 | | - archiveArtifacts artifacts: 'build/jri-' + JDKPLATFORM_VALUE + '.tar.gz', fingerprint: true |
49 | | - archiveArtifacts artifacts: 'build/jdk-' + JDKPLATFORM_VALUE + '.tar.gz', fingerprint: true |
50 | | - archiveArtifacts artifacts: 'build/jmods-' + JDKPLATFORM_VALUE + '.tar.gz', fingerprint: true |
| 39 | + stage("JDK packaging") { |
| 40 | + bldImage.inside("${mountParams} ${envParams}") { |
| 41 | + sh "/opt/jdkcross/zip.sh" |
51 | 42 | } |
| 43 | + archiveArtifacts artifacts: "${env.WORKSPACE}/build/jri-${params.JDKPLATFORM_VALUE}.tar.gz", fingerprint: true |
| 44 | + archiveArtifacts artifacts: "${env.WORKSPACE}/build/jdk-${params.JDKPLATFORM_VALUE}.tar.gz", fingerprint: true |
| 45 | + archiveArtifacts artifacts: "${env.WORKSPACE}/build/jmods-${params.JDKPLATFORM_VALUE}.tar.gz", fingerprint: true |
52 | 46 | } |
53 | | - } |
54 | | - post { |
55 | | - always { |
56 | | - script { |
57 | | - try { |
58 | | - sh "docker rmi ev3dev-lang-java:jdk-build 2>/dev/null" |
59 | | - } catch (err) {} |
60 | | - try { |
61 | | - sh "docker rmi ev3dev-lang-java:jdk-stretch 2>/dev/null" |
62 | | - } catch (err) {} |
63 | | - try { |
64 | | - cleanWs() |
65 | | - } catch (err) {} |
66 | | - } |
| 47 | + } finally { |
| 48 | + stage ('Cleanup') { |
| 49 | + try { |
| 50 | + sh "docker rmi ${bldImage.id} 2>/dev/null" |
| 51 | + } catch (err) {} |
| 52 | + try { |
| 53 | + sh "docker rmi ${osImage.id} 2>/dev/null" |
| 54 | + } catch (err) {} |
| 55 | + cleanWs() |
67 | 56 | } |
68 | 57 | } |
69 | 58 | } |
0 commit comments