1
1
pipeline {
2
2
options {
3
- buildDiscarder(logRotator(artifactDaysToKeepStr : ' ' , artifactNumToKeepStr : ' ' , daysToKeepStr : ' ' , numToKeepStr : ' 10' ))
3
+ buildDiscarder(logRotator(numToKeepStr : ' 10' ))
4
4
disableConcurrentBuilds()
5
5
}
6
6
agent any
7
7
environment {
8
- IMAGE_NAME = " nginx-proxy-manager"
9
- TEMP_IMAGE_NAME = " nginx-proxy-manager-build_${ BUILD_NUMBER} "
10
- TAG_VERSION = getPackageVersion()
8
+ IMAGE_NAME = " nginx-proxy-manager"
9
+ TEMP_IMAGE_NAME = " nginx-proxy-manager-build_${ BUILD_NUMBER} "
10
+ TEMP_IMAGE_NAME_ARM = " nginx-proxy-manager-armhf-build_${ BUILD_NUMBER} "
11
+ TAG_VERSION = getPackageVersion()
11
12
}
12
13
stages {
13
- stage(' Prepare' ) {
14
- steps {
15
- sh ' docker pull jc21/$IMAGE_NAME-base'
16
- sh ' docker pull $DOCKER_CI_TOOLS'
17
- }
18
- }
19
14
stage(' Build' ) {
20
- steps {
21
- sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base yarn --registry=$NPM_REGISTRY install'
22
- sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base gulp build'
23
- sh ' rm -rf node_modules'
24
- sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base yarn --registry=$NPM_REGISTRY install --prod'
25
- sh ' docker run --rm -v $(pwd)/manager:/data $DOCKER_CI_TOOLS node-prune'
26
- sh ' docker build --squash --compress -t $TEMP_IMAGE_NAME .'
27
- }
28
- }
29
- stage(' Publish' ) {
30
- when {
31
- branch ' master'
32
- }
33
- steps {
34
- sh ' docker tag $TEMP_IMAGE_NAME ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:latest'
35
- sh ' docker push ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:latest'
36
- sh ' docker tag $TEMP_IMAGE_NAME ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION'
37
- sh ' docker push ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION'
38
- sh ' docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:latest'
39
- sh ' docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
15
+ parallel {
16
+ stage(' x86_64' ) {
17
+ when {
18
+ branch ' master'
19
+ }
20
+ steps {
21
+ // Codebase
22
+ sh ' docker pull jc21/$IMAGE_NAME-base'
23
+ sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base yarn --registry=$NPM_REGISTRY install'
24
+ sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base gulp build'
25
+ sh ' rm -rf node_modules'
26
+ sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base yarn --registry=$NPM_REGISTRY install --prod'
27
+ sh ' docker run --rm -v $(pwd)/manager:/data $DOCKER_CI_TOOLS node-prune'
28
+
29
+ // Docker Build
30
+ sh ' docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE_NAME .'
31
+
32
+ // Private Registry
33
+ sh ' docker tag $TEMP_IMAGE_NAME $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest'
34
+ sh ' docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest'
35
+ sh ' docker tag $TEMP_IMAGE_NAME ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION'
36
+ sh ' docker push ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION'
37
+
38
+ // Dockerhub
39
+ sh ' docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:latest'
40
+ sh ' docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
41
+
42
+ withCredentials([usernamePassword(credentialsId : ' jc21-dockerhub' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
43
+ sh " docker login -u '${ duser} ' -p '$dpass '"
44
+ sh ' docker push docker.io/jc21/$IMAGE_NAME:latest'
45
+ sh ' docker push docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
46
+ }
40
47
41
- withCredentials([usernamePassword(credentialsId : ' jc21-dockerhub' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
42
- sh " docker login -u '${ duser} ' -p '$dpass '"
43
- sh ' docker push docker.io/jc21/$IMAGE_NAME:latest'
44
- sh ' docker push docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
48
+ sh ' docker rmi $TEMP_IMAGE_NAME'
49
+ }
50
+ }
51
+ stage(' armhf' ) {
52
+ when {
53
+ branch ' master'
54
+ }
55
+ agent {
56
+ label ' armhf'
57
+ }
58
+ steps {
59
+ // Codebase
60
+ sh ' docker pull jc21/$IMAGE_NAME-base:armhf'
61
+ sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base:armhf yarn --registry=$NPM_REGISTRY install'
62
+ sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base:armhf gulp build'
63
+ sh ' rm -rf node_modules'
64
+ sh ' docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base:armhf yarn --registry=$NPM_REGISTRY install --prod'
65
+ sh ' docker run --rm -v $(pwd)/manager:/data $DOCKER_CI_TOOLS:latest-armhf node-prune'
66
+
67
+ // Docker Build
68
+ sh ' docker build --pull --no-cache --squash --compress -f Dockerfile.armhf -t $TEMP_IMAGE_NAME_ARM .'
69
+
70
+ // Private Registry
71
+ sh ' docker tag $TEMP_IMAGE_NAME_ARM $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest-armhf'
72
+ sh ' docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest-armhf'
73
+ sh ' docker tag $TEMP_IMAGE_NAME_ARM ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION-armhf'
74
+ sh ' docker push ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION-armhf'
75
+
76
+ // Dockerhub
77
+ sh ' docker tag $TEMP_IMAGE_NAME_ARM docker.io/jc21/$IMAGE_NAME:latest-armhf'
78
+ sh ' docker tag $TEMP_IMAGE_NAME_ARM docker.io/jc21/$IMAGE_NAME:$TAG_VERSION-armhf'
79
+
80
+ withCredentials([usernamePassword(credentialsId : ' jc21-dockerhub' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
81
+ sh " docker login -u '${ duser} ' -p '$dpass '"
82
+ sh ' docker push docker.io/jc21/$IMAGE_NAME:latest-armhf'
83
+ sh ' docker push docker.io/jc21/$IMAGE_NAME:$TAG_VERSION-armhf'
84
+ }
85
+
86
+ sh ' docker rmi $TEMP_IMAGE_NAME_ARM'
87
+ }
45
88
}
46
89
}
47
90
}
48
91
}
49
- triggers {
50
- bitbucketPush()
51
- }
52
92
post {
53
93
success {
54
94
slackSend color : " #72c900" , message : " SUCCESS: <${ BUILD_URL} |${ JOB_NAME} > build #${ BUILD_NUMBER} - ${ currentBuild.durationString} "
@@ -58,9 +98,6 @@ pipeline {
58
98
slackSend color : " #d61111" , message : " FAILED: <${ BUILD_URL} |${ JOB_NAME} > build #${ BUILD_NUMBER} - ${ currentBuild.durationString} "
59
99
sh ' figlet "FAILURE"'
60
100
}
61
- always {
62
- sh ' docker rmi $TEMP_IMAGE_NAME'
63
- }
64
101
}
65
102
}
66
103
0 commit comments