@@ -12,6 +12,7 @@ pipeline {
12
12
TEMP_IMAGE_ARM64 = " nginx-proxy-manager-arm64-build_${ BUILD_NUMBER} "
13
13
TAG_VERSION = getPackageVersion()
14
14
MAJOR_VERSION = " 2"
15
+ BRANCH_LOWER = " ${ BRANCH_NAME.toLowerCase()} "
15
16
}
16
17
stages {
17
18
stage(' Build PR' ) {
@@ -21,23 +22,27 @@ pipeline {
21
22
steps {
22
23
ansiColor(' xterm' ) {
23
24
// Codebase
24
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE yarn install'
25
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE npm run-script build'
25
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} yarn install'
26
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} npm run-script build'
26
27
sh ' rm -rf node_modules'
27
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE yarn install --prod'
28
- sh ' docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS node-prune'
28
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} yarn install --prod'
29
+ sh ' docker run --rm -v $(pwd):/data ${ DOCKER_CI_TOOLS} node-prune'
29
30
30
31
// Docker Build
31
- sh ' docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE .'
32
+ sh ' docker build --pull --no-cache --squash --compress -t ${ TEMP_IMAGE} .'
32
33
33
34
// Private Registry
34
- sh ' docker tag $TEMP_IMAGE $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:$BRANCH_NAME '
35
+ sh ' docker tag ${ TEMP_IMAGE} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:github-${BRANCH_LOWER} '
35
36
withCredentials([usernamePassword(credentialsId : ' jc21-private-registry' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
36
- sh " docker login -u '${ duser} ' -p '$dpass ' $DOCKER_PRIVATE_REGISTRY "
37
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:$BRANCH_NAME '
37
+ sh " docker login -u '${ duser} ' -p '${ dpass} ' ${ DOCKER_PRIVATE_REGISTRY} "
38
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:github-${BRANCH_LOWER} '
38
39
}
39
40
40
- sh ' docker rmi $TEMP_IMAGE'
41
+ sh ' docker rmi ${TEMP_IMAGE}'
42
+
43
+ script {
44
+ def comment = pullRequest. comment(" Docker Image for build ${ BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/jc21/${ IMAGE} ) as `jc21/${ IMAGE} :github-${ BRANCH_LOWER} `" )
45
+ }
41
46
}
42
47
}
43
48
}
@@ -48,30 +53,30 @@ pipeline {
48
53
steps {
49
54
ansiColor(' xterm' ) {
50
55
// Codebase
51
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE yarn install'
52
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE npm run-script build'
56
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} yarn install'
57
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} npm run-script build'
53
58
sh ' rm -rf node_modules'
54
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE yarn install --prod'
55
- sh ' docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS node-prune'
59
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} yarn install --prod'
60
+ sh ' docker run --rm -v $(pwd):/data ${ DOCKER_CI_TOOLS} node-prune'
56
61
57
62
// Docker Build
58
- sh ' docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE .'
63
+ sh ' docker build --pull --no-cache --squash --compress -t ${ TEMP_IMAGE} .'
59
64
60
65
// Dockerhub
61
- sh ' docker tag $TEMP_IMAGE docker.io/jc21/$IMAGE:develop'
66
+ sh ' docker tag ${ TEMP_IMAGE} docker.io/jc21/${ IMAGE} :develop'
62
67
withCredentials([usernamePassword(credentialsId : ' jc21-dockerhub' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
63
- sh " docker login -u '${ duser} ' -p '$dpass '"
64
- sh ' docker push docker.io/jc21/$IMAGE:develop'
68
+ sh " docker login -u '${ duser} ' -p '${ dpass} '"
69
+ sh ' docker push docker.io/jc21/${ IMAGE} :develop'
65
70
}
66
71
67
72
// Private Registry
68
- sh ' docker tag $TEMP_IMAGE $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:develop'
73
+ sh ' docker tag ${ TEMP_IMAGE} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :develop'
69
74
withCredentials([usernamePassword(credentialsId : ' jc21-private-registry' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
70
- sh " docker login -u '${ duser} ' -p '$dpass ' $DOCKER_PRIVATE_REGISTRY "
71
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:develop'
75
+ sh " docker login -u '${ duser} ' -p '${ dpass} ' ${ DOCKER_PRIVATE_REGISTRY} "
76
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :develop'
72
77
}
73
78
74
- sh ' docker rmi $TEMP_IMAGE'
79
+ sh ' docker rmi ${ TEMP_IMAGE} '
75
80
}
76
81
}
77
82
}
@@ -84,40 +89,40 @@ pipeline {
84
89
steps {
85
90
ansiColor(' xterm' ) {
86
91
// Codebase
87
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE yarn install'
88
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE npm run-script build'
92
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} yarn install'
93
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} npm run-script build'
89
94
sh ' rm -rf node_modules'
90
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE yarn install --prod'
91
- sh ' docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS node-prune'
95
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} yarn install --prod'
96
+ sh ' docker run --rm -v $(pwd):/data ${ DOCKER_CI_TOOLS} node-prune'
92
97
93
98
// Docker Build
94
- sh ' docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE .'
99
+ sh ' docker build --pull --no-cache --squash --compress -t ${ TEMP_IMAGE} .'
95
100
96
101
// Dockerhub
97
- sh ' docker tag $TEMP_IMAGE docker.io/jc21/$IMAGE:$ TAG_VERSION'
98
- sh ' docker tag $TEMP_IMAGE docker.io/jc21/$IMAGE:$ MAJOR_VERSION'
99
- sh ' docker tag $TEMP_IMAGE docker.io/jc21/$IMAGE:latest'
102
+ sh ' docker tag ${ TEMP_IMAGE} docker.io/jc21/${ IMAGE}:${ TAG_VERSION} '
103
+ sh ' docker tag ${ TEMP_IMAGE} docker.io/jc21/${ IMAGE}:${ MAJOR_VERSION} '
104
+ sh ' docker tag ${ TEMP_IMAGE} docker.io/jc21/${ IMAGE} :latest'
100
105
101
106
withCredentials([usernamePassword(credentialsId : ' jc21-dockerhub' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
102
- sh " docker login -u '${ duser} ' -p '$dpass '"
103
- sh ' docker push docker.io/jc21/$IMAGE:$ TAG_VERSION'
104
- sh ' docker push docker.io/jc21/$IMAGE:$ MAJOR_VERSION'
105
- sh ' docker push docker.io/jc21/$IMAGE:latest'
107
+ sh " docker login -u '${ duser} ' -p '${ dpass} '"
108
+ sh ' docker push docker.io/jc21/${ IMAGE}:${ TAG_VERSION} '
109
+ sh ' docker push docker.io/jc21/${ IMAGE}:${ MAJOR_VERSION} '
110
+ sh ' docker push docker.io/jc21/${ IMAGE} :latest'
106
111
}
107
112
108
113
// Private Registry
109
- sh ' docker tag $TEMP_IMAGE $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ TAG_VERSION'
110
- sh ' docker tag $TEMP_IMAGE $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ MAJOR_VERSION'
111
- sh ' docker tag $TEMP_IMAGE $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:latest'
114
+ sh ' docker tag ${ TEMP_IMAGE} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ TAG_VERSION} '
115
+ sh ' docker tag ${ TEMP_IMAGE} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ MAJOR_VERSION} '
116
+ sh ' docker tag ${ TEMP_IMAGE} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :latest'
112
117
113
118
withCredentials([usernamePassword(credentialsId : ' jc21-private-registry' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
114
- sh " docker login -u '${ duser} ' -p '$dpass ' $DOCKER_PRIVATE_REGISTRY "
115
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ TAG_VERSION'
116
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ MAJOR_VERSION'
117
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:latest'
119
+ sh " docker login -u '${ duser} ' -p '${ dpass} ' ${ DOCKER_PRIVATE_REGISTRY} "
120
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ TAG_VERSION} '
121
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ MAJOR_VERSION} '
122
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :latest'
118
123
}
119
124
120
- sh ' docker rmi $TEMP_IMAGE'
125
+ sh ' docker rmi ${ TEMP_IMAGE} '
121
126
}
122
127
}
123
128
}
@@ -131,39 +136,39 @@ pipeline {
131
136
steps {
132
137
ansiColor(' xterm' ) {
133
138
// Codebase
134
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE:armhf yarn install'
135
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE:armhf npm run-script build'
139
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} :armhf yarn install'
140
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} :armhf npm run-script build'
136
141
sh ' rm -rf node_modules'
137
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE:armhf yarn install --prod'
142
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} :armhf yarn install --prod'
138
143
139
144
// Docker Build
140
- sh ' docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE_ARM -f Dockerfile.armhf .'
145
+ sh ' docker build --pull --no-cache --squash --compress -t ${ TEMP_IMAGE_ARM} -f Dockerfile.armhf .'
141
146
142
147
// Dockerhub
143
- sh ' docker tag $TEMP_IMAGE_ARM docker.io/jc21/$IMAGE:$ TAG_VERSION-armhf'
144
- sh ' docker tag $TEMP_IMAGE_ARM docker.io/jc21/$IMAGE:$ MAJOR_VERSION-armhf'
145
- sh ' docker tag $TEMP_IMAGE_ARM docker.io/jc21/$IMAGE:latest-armhf'
148
+ sh ' docker tag ${ TEMP_IMAGE_ARM} docker.io/jc21/${ IMAGE}:${ TAG_VERSION} -armhf'
149
+ sh ' docker tag ${ TEMP_IMAGE_ARM} docker.io/jc21/${ IMAGE}:${ MAJOR_VERSION} -armhf'
150
+ sh ' docker tag ${ TEMP_IMAGE_ARM} docker.io/jc21/${ IMAGE} :latest-armhf'
146
151
147
152
withCredentials([usernamePassword(credentialsId : ' jc21-dockerhub' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
148
- sh " docker login -u '${ duser} ' -p '$dpass '"
149
- sh ' docker push docker.io/jc21/$IMAGE:$ TAG_VERSION-armhf'
150
- sh ' docker push docker.io/jc21/$IMAGE:$ MAJOR_VERSION-armhf'
151
- sh ' docker push docker.io/jc21/$IMAGE:latest-armhf'
153
+ sh " docker login -u '${ duser} ' -p '${ dpass} '"
154
+ sh ' docker push docker.io/jc21/${ IMAGE}:${ TAG_VERSION} -armhf'
155
+ sh ' docker push docker.io/jc21/${ IMAGE}:${ MAJOR_VERSION} -armhf'
156
+ sh ' docker push docker.io/jc21/${ IMAGE} :latest-armhf'
152
157
}
153
158
154
159
// Private Registry
155
- sh ' docker tag $TEMP_IMAGE_ARM $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ TAG_VERSION-armhf'
156
- sh ' docker tag $TEMP_IMAGE_ARM $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ MAJOR_VERSION-armhf'
157
- sh ' docker tag $TEMP_IMAGE_ARM $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:latest-armhf'
160
+ sh ' docker tag ${ TEMP_IMAGE_ARM} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ TAG_VERSION} -armhf'
161
+ sh ' docker tag ${ TEMP_IMAGE_ARM} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ MAJOR_VERSION} -armhf'
162
+ sh ' docker tag ${ TEMP_IMAGE_ARM} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :latest-armhf'
158
163
159
164
withCredentials([usernamePassword(credentialsId : ' jc21-private-registry' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
160
- sh " docker login -u '${ duser} ' -p '$dpass ' $DOCKER_PRIVATE_REGISTRY "
161
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ TAG_VERSION-armhf'
162
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ MAJOR_VERSION-armhf'
163
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:latest-armhf'
165
+ sh " docker login -u '${ duser} ' -p '${ dpass} ' ${ DOCKER_PRIVATE_REGISTRY} "
166
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ TAG_VERSION} -armhf'
167
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ MAJOR_VERSION} -armhf'
168
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :latest-armhf'
164
169
}
165
170
166
- sh ' docker rmi $TEMP_IMAGE_ARM'
171
+ sh ' docker rmi ${ TEMP_IMAGE_ARM} '
167
172
}
168
173
}
169
174
}
@@ -177,39 +182,39 @@ pipeline {
177
182
steps {
178
183
ansiColor(' xterm' ) {
179
184
// Codebase
180
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE:arm64 yarn install'
181
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE:arm64 npm run-script build'
185
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} :arm64 yarn install'
186
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} :arm64 npm run-script build'
182
187
sh ' sudo rm -rf node_modules'
183
- sh ' docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE:arm64 yarn install --prod'
188
+ sh ' docker run --rm -v $(pwd):/app -w /app ${ BASE_IMAGE} :arm64 yarn install --prod'
184
189
185
190
// Docker Build
186
- sh ' docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE_ARM64 -f Dockerfile.arm64 .'
191
+ sh ' docker build --pull --no-cache --squash --compress -t ${ TEMP_IMAGE_ARM64} -f Dockerfile.arm64 .'
187
192
188
193
// Dockerhub
189
- sh ' docker tag $TEMP_IMAGE_ARM64 docker.io/jc21/$IMAGE:$ TAG_VERSION-arm64'
190
- sh ' docker tag $TEMP_IMAGE_ARM64 docker.io/jc21/$IMAGE:$ MAJOR_VERSION-arm64'
191
- sh ' docker tag $TEMP_IMAGE_ARM64 docker.io/jc21/$IMAGE:latest-arm64'
194
+ sh ' docker tag ${ TEMP_IMAGE_ARM64} docker.io/jc21/${ IMAGE}:${ TAG_VERSION} -arm64'
195
+ sh ' docker tag ${ TEMP_IMAGE_ARM64} docker.io/jc21/${ IMAGE}:${ MAJOR_VERSION} -arm64'
196
+ sh ' docker tag ${ TEMP_IMAGE_ARM64} docker.io/jc21/${ IMAGE} :latest-arm64'
192
197
193
198
withCredentials([usernamePassword(credentialsId : ' jc21-dockerhub' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
194
- sh " docker login -u '${ duser} ' -p '$dpass '"
195
- sh ' docker push docker.io/jc21/$IMAGE:$ TAG_VERSION-arm64'
196
- sh ' docker push docker.io/jc21/$IMAGE:$ MAJOR_VERSION-arm64'
197
- sh ' docker push docker.io/jc21/$IMAGE:latest-arm64'
199
+ sh " docker login -u '${ duser} ' -p '${ dpass} '"
200
+ sh ' docker push docker.io/jc21/${ IMAGE}:${ TAG_VERSION} -arm64'
201
+ sh ' docker push docker.io/jc21/${ IMAGE}:${ MAJOR_VERSION} -arm64'
202
+ sh ' docker push docker.io/jc21/${ IMAGE} :latest-arm64'
198
203
}
199
204
200
205
// Private Registry
201
- sh ' docker tag $TEMP_IMAGE_ARM64 $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ TAG_VERSION-arm64'
202
- sh ' docker tag $TEMP_IMAGE_ARM64 $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ MAJOR_VERSION-arm64'
203
- sh ' docker tag $TEMP_IMAGE_ARM64 $ DOCKER_PRIVATE_REGISTRY/$ IMAGE:latest-arm64'
206
+ sh ' docker tag ${ TEMP_IMAGE_ARM64} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ TAG_VERSION} -arm64'
207
+ sh ' docker tag ${ TEMP_IMAGE_ARM64} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ MAJOR_VERSION} -arm64'
208
+ sh ' docker tag ${ TEMP_IMAGE_ARM64} ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :latest-arm64'
204
209
205
210
withCredentials([usernamePassword(credentialsId : ' jc21-private-registry' , passwordVariable : ' dpass' , usernameVariable : ' duser' )]) {
206
- sh " docker login -u '${ duser} ' -p '$dpass ' $DOCKER_PRIVATE_REGISTRY "
207
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ TAG_VERSION-arm64'
208
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:$ MAJOR_VERSION-arm64'
209
- sh ' docker push $DOCKER_PRIVATE_REGISTRY/$ IMAGE:latest-arm64'
211
+ sh " docker login -u '${ duser} ' -p '${ dpass} ' ${ DOCKER_PRIVATE_REGISTRY} "
212
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ TAG_VERSION} -arm64'
213
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE}:${ MAJOR_VERSION} -arm64'
214
+ sh ' docker push ${ DOCKER_PRIVATE_REGISTRY}/${ IMAGE} :latest-arm64'
210
215
}
211
216
212
- sh ' docker rmi $TEMP_IMAGE_ARM64'
217
+ sh ' docker rmi ${ TEMP_IMAGE_ARM64} '
213
218
214
219
// Hack to clean up ec2 instance for next build
215
220
sh ' sudo chown -R ec2-user:ec2-user *'
@@ -232,7 +237,7 @@ pipeline {
232
237
}
233
238
234
239
def getPackageVersion () {
235
- ver = sh(script : ' docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS bash -c "cat /data/package.json|jq -r \' .version\' "' , returnStdout : true )
240
+ ver = sh(script : ' docker run --rm -v $(pwd):/data ${ DOCKER_CI_TOOLS} bash -c "cat /data/package.json|jq -r \' .version\' "' , returnStdout : true )
236
241
return ver. trim()
237
242
}
238
243
0 commit comments