@@ -136,7 +136,7 @@ void copyRPMs() {
136
136
error " Invalid value in marklogicVersion parameter."
137
137
}
138
138
sh """
139
- cd src/centos
139
+ cd src
140
140
if [ -z ${ env.ML_RPM} ]; then
141
141
wget --no-verbose https://bed-artifactory.bedford.progress.com:443/artifactory/ml-rpm-tierpoint/${ RPMbranch} /server/MarkLogic-${ RPMversion}${ RPMsuffix} .x86_64.rpm
142
142
else
@@ -149,43 +149,47 @@ void copyRPMs() {
149
149
fi
150
150
"""
151
151
script {
152
- RPM = sh(returnStdout : true , script : ' cd src/centos ;file MarkLogic-*.rpm | cut -d: -f1' ). trim()
153
- CONVERTERS = sh(returnStdout : true , script : ' cd src/centos ;file MarkLogicConverters-*.rpm | cut -d: -f1' ). trim()
152
+ RPM = sh(returnStdout : true , script : ' cd src;file MarkLogic-*.rpm | cut -d: -f1' ). trim()
153
+ CONVERTERS = sh(returnStdout : true , script : ' cd src;file MarkLogicConverters-*.rpm | cut -d: -f1' ). trim()
154
154
mlVersion = sh(returnStdout : true , script : " echo ${ RPM} | awk -F \" MarkLogic-\" '{print \$ 2;}' | awk -F \" .x86_64.rpm\" '{print \$ 1;}' | awk -F \" -rhel\" '{print \$ 1;}' " ). trim()
155
155
}
156
156
}
157
157
158
+ void buildDockerImage () {
159
+ sh " make build docker_image_type=${ dockerImageType} version=${ mlVersion} -${ env.dockerImageType} -${ env.dockerVersion} build_branch=${ env.BRANCH_NAME} package=${ RPM} converters=${ CONVERTERS} "
160
+ currentBuild. displayName = " #${ BUILD_NUMBER} ${ mlVersion} -${ env.dockerImageType} -${ env.dockerVersion} "
161
+ }
162
+
158
163
void structureTests () {
159
164
sh """
160
- cd test
161
- #insert current version
162
- sed -i -e 's^VERSION_PLACEHOLDER^${ mlVersion} -${ env.platformString} -${ env.dockerVersion} ^g' -e 's^BRANCH_PLACEHOLDER^${ env.BRANCH_NAME} ^g' ./structure-test.yaml
163
- cd ..
164
- curl -s -LO https://storage.googleapis.com/container-structure-test/v1.11.0/container-structure-test-linux-amd64 && chmod +x container-structure-test-linux-amd64 && mv container-structure-test-linux-amd64 container-structure-test
165
- make structure-test version=${ mlVersion} -${ env.platformString} -${ env.dockerVersion} Jenkins=true
166
- #fix junit output
167
- sed -i -e 's/<\\ /testsuites>//' -e 's/<testsuite>//' -e 's/<testsuites/<testsuite name="container-structure-test"/' ./container-structure-test.xml
165
+ #install container-structure-test 1.16.0 binary
166
+ curl -s -LO https://storage.googleapis.com/container-structure-test/v1.16.0/container-structure-test-linux-amd64 && chmod +x container-structure-test-linux-amd64 && mv container-structure-test-linux-amd64 container-structure-test
167
+ make structure-test current_image=marklogic/marklogic-server-${ dockerImageType} :${ mlVersion} -${ env.dockerImageType} -${ env.dockerVersion} version=${ mlVersion} -${ env.dockerImageType} -${ env.dockerVersion} build_branch=${ env.BRANCH_NAME} docker_image_type=${ env.dockerImageType} Jenkins=true
168
168
"""
169
169
}
170
170
171
+ void dockerTests () {
172
+ sh " make docker-tests current_image=marklogic/marklogic-server-${ dockerImageType} :${ mlVersion} -${ env.dockerImageType} -${ env.dockerVersion} version=${ mlVersion} -${ env.dockerImageType} -${ env.dockerVersion} build_branch=${ env.BRANCH_NAME} docker_image_type=${ dockerImageType} "
173
+ }
174
+
171
175
void lint () {
172
- IMAGE_INFO = sh(returnStdout : true , script : ' docker images | grep \" marklogic-server-centos \" ' )
176
+ IMAGE_INFO = sh(returnStdout : true , script : ' docker images | grep \" marklogic-server-' + " ${ dockerImageType } " + ' \" ' )
173
177
174
- sh '''
178
+ sh """
175
179
make lint Jenkins=true
176
- cat start-marklogic -lint.txt marklogic-deps-centos-base-lint.txt marklogic-server-centos-base -lint.txt
177
- '''
180
+ cat start-scripts -lint.txt dockerfile -lint.txt
181
+ """
178
182
179
- LINT_OUTPUT = sh(returnStdout : true , script : ' echo start-marklogic.sh : ;echo; cat start-marklogic -lint.txt; echo dockerfile-marklogic-server-centos: ; echo marklogic-deps-centos:base: ;echo; cat marklogic-deps-centos-base- lint.txt; echo marklogic-server-centos:base: ;echo; cat marklogic-server-centos-base- lint.txt' ). trim()
183
+ LINT_OUTPUT = sh(returnStdout : true , script : " echo start-scripts-lint.txt : ;echo; cat start-scripts -lint.txt; echo; echo dockerfile- lint.txt: ; cat dockerfile- lint.txt; echo " ). trim()
180
184
181
- sh '''
182
- rm -f start-marklogic -lint.txt marklogic-deps-centos-base-lint.txt marklogic-server-centos-base -lint.txt
183
- '''
185
+ sh """
186
+ rm -f start-scripts -lint.txt dockerfile -lint.txt
187
+ """
184
188
}
185
189
186
- void scan () {
190
+ void vulnerabilityScan () {
187
191
sh """
188
- make scan version= ${ mlVersion} -${ env.platformString } -${ env.dockerVersion} Jenkins=true
192
+ make scan current_image=marklogic/marklogic-server- ${ dockerImageType } : ${ mlVersion} -${ env.dockerImageType } -${ env.dockerVersion} Jenkins=true
189
193
grep \' High\\ |Critical\' scan-server-image.txt
190
194
"""
191
195
@@ -198,11 +202,16 @@ void scan() {
198
202
}
199
203
200
204
void publishToInternalRegistry () {
201
- publishTag= " ${ mlVersion} -${ env.platformString} -${ env.dockerVersion} "
205
+ currentImage= " marklogic/marklogic-server-${ dockerImageType} :${ mlVersion} -${ env.dockerImageType} -${ env.dockerVersion} "
206
+ mlVerShort= mlVersion. split(" \\ ." )[0 ]
207
+ latestTag= " marklogic/marklogic-server-${ dockerImageType} :latest-${ mlVerShort} "
202
208
withCredentials([usernamePassword(credentialsId : ' builder-credentials-artifactory' , passwordVariable : ' docker_password' , usernameVariable : ' docker_user' )]) {
203
209
sh """
204
210
echo "${ docker_password} " | docker login --username ${ docker_user} --password-stdin ${ dockerRegistry}
205
- make push-mlregistry version=${ publishTag}
211
+ docker tag ${ currentImage} ${ dockerRegistry} /${ currentImage}
212
+ docker tag ${ currentImage} ${ dockerRegistry} /${ latestTag}
213
+ docker push ${ dockerRegistry} /${ currentImage}
214
+ docker push ${ dockerRegistry} /${ latestTag}
206
215
"""
207
216
208
217
}
@@ -216,13 +225,13 @@ void publishToInternalRegistry() {
216
225
]]) {
217
226
sh """
218
227
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 713759029616.dkr.ecr.us-west-2.amazonaws.com
219
- docker tag local-dev/marklogic-server-centos: ${ publishTag } 713759029616.dkr.ecr.us-west-2.amazonaws.com/ml-docker-nightly:${ publishTag }
220
- docker push 713759029616.dkr.ecr.us-west-2.amazonaws.com/ml-docker-nightly:${ publishTag }
228
+ docker tag ${ currentImage } 713759029616.dkr.ecr.us-west-2.amazonaws.com/ml-docker-nightly:${ mlVersion } - ${ env.dockerImageType } - ${ env.dockerVersion }
229
+ docker push 713759029616.dkr.ecr.us-west-2.amazonaws.com/ml-docker-nightly:${ mlVersion } - ${ env.dockerImageType } - ${ env.dockerVersion }
221
230
"""
222
231
}
223
232
}
224
233
225
- currentBuild. description = " Publish ${ publishTag } "
234
+ currentBuild. description = " Published "
226
235
}
227
236
228
237
void publishTestResults () {
@@ -242,9 +251,10 @@ pipeline {
242
251
skipStagesAfterUnstable()
243
252
}
244
253
triggers {
245
- parameterizedCron( env. BRANCH_NAME == ' develop' ? ''' 00 03 * * * % marklogicVersion=10
246
- 00 04 * * * % marklogicVersion=11
247
- 00 05 * * * % marklogicVersion=12''' : ' ' )
254
+ parameterizedCron( env. BRANCH_NAME == ' develop' ? ''' 00 03 * * * % marklogicVersion=10 dockerImageType=centos
255
+ 00 04 * * * % marklogicVersion=11 dockerImageType=centos
256
+ 00 05 * * * % marklogicVersion=12 dockerImageType=centos
257
+ 00 06 * * * % marklogicVersion=11 dockerImageType=ubi''' : ' ' )
248
258
}
249
259
environment {
250
260
QA_LICENSE_KEY = credentials(' QA_LICENSE_KEY' )
@@ -253,7 +263,7 @@ pipeline {
253
263
parameters {
254
264
string(name : ' emailList' , defaultValue : emailList, description : ' List of email for build notification' , trim : true )
255
265
string(name : ' dockerVersion' , defaultValue : ' 1.1.2' , description : ' ML Docker version. This version along with ML rpm package version will be the image tag as {ML_Version}_{dockerVersion}' , trim : true )
256
- string (name : ' platformString ' , defaultValue : ' centos' , description : ' Platform string for Docker image version . Will be made part of the docker image tag' , trim : true )
266
+ choice (name : ' dockerImageType ' , choices : ' centos\n ubi \n ubi-rootless ' , description : ' Platform type for Docker image. Will be made part of the docker image tag' )
257
267
choice(name : ' marklogicVersion' , choices : ' 11\n 12\n 10' , description : ' MarkLogic Server Branch. used to pick appropriate rpm' )
258
268
string(name : ' ML_RPM' , defaultValue : ' ' , description : ' URL for RPM to be used for Image creation. \n If left blank nightly ML rpm will be used.\n Please provide Jenkins accessible path e.g. /project/engineering or /project/qa' , trim : true )
259
269
string(name : ' ML_CONVERTERS' , defaultValue : ' ' , description : ' URL for the converters RPM to be included in the image creation \n If left blank the nightly ML Converters Package will be used.' , trim : true )
@@ -277,7 +287,7 @@ pipeline {
277
287
278
288
stage(' Build-Image' ) {
279
289
steps {
280
- sh " make build version= ${ mlVersion } - ${ env.platformString } - ${ env.dockerVersion } build_branch= ${ env.BRANCH_NAME } package= ${ RPM } converters= ${ CONVERTERS } "
290
+ buildDockerImage()
281
291
}
282
292
}
283
293
@@ -289,7 +299,7 @@ pipeline {
289
299
290
300
stage(' Scan' ) {
291
301
steps {
292
- scan ()
302
+ vulnerabilityScan ()
293
303
}
294
304
}
295
305
@@ -307,7 +317,7 @@ pipeline {
307
317
expression { return params. DOCKER_TESTS }
308
318
}
309
319
steps {
310
- sh " make docker-tests test_image=local-dev/marklogic-server-centos: ${ mlVersion } - ${ env.platformString } - ${ env.dockerVersion } version= ${ mlVersion } - ${ env.platformString } - ${ env.dockerVersion } build_branch= ${ env.BRANCH_NAME } "
320
+ dockerTests()
311
321
}
312
322
}
313
323
@@ -327,7 +337,7 @@ pipeline {
327
337
post {
328
338
always {
329
339
sh '''
330
- cd src/centos
340
+ cd src
331
341
rm -rf *.rpm
332
342
docker rm -f $(docker ps -a -q) || true
333
343
docker system prune --force --filter "until=720h"
0 commit comments