@@ -162,6 +162,60 @@ timestamps{
162
162
}
163
163
parallel testJobs
164
164
}
165
+ } else if (! JOB_NAME . contains(" _imagePull" ) && ! JOB_NAME . contains(" _imageUpload" ) && params. TARGET == " dev.external" ) {
166
+ // trigger xxx_imageUpload test job, then xxx_imagePull test job
167
+ def commonLabel = " sw.tool.podman&&sw.tool.container.criu"
168
+ if (params. LABEL_ADDITION ) {
169
+ commonLabel + = " &&${ params.LABEL_ADDITION} "
170
+ }
171
+ def imageUploadMap = [
172
+ ' x86-64_linux' : [
173
+ [' LABEL_ADDITION' : " ${ commonLabel} &&sw.os.ubuntu.22&&hw.arch.x86.broadwell" ],
174
+ [' LABEL_ADDITION' : " ${ commonLabel} &&sw.os.ubuntu.22&&hw.arch.x86.amd" ],
175
+ [' LABEL_ADDITION' : " ${ commonLabel} &&sw.os.rhel.8&&hw.arch.x86.broadwell" ],
176
+ [' LABEL_ADDITION' : " ${ commonLabel} &&sw.os.rhel.8&&hw.arch.x86.amd" ],
177
+ [' LABEL_ADDITION' : " ${ commonLabel} &&sw.os.rhel.8&&hw.arch.x86.skylake" ]
178
+ ]
179
+ ]
180
+ def imagePullMap = [
181
+ ' x86-64_linux' : [
182
+ [' LABEL_ADDITION' : " ${ commonLabel} &&sw.os.ubuntu.22" ],
183
+ [' LABEL_ADDITION' : " ${ commonLabel} &&sw.os.rhel.8" ]
184
+ ]
185
+ ]
186
+ if (params. PLATFORM && imageUploadMap[params. PLATFORM ] != null && imagePullMap[params. PLATFORM ] != null ) {
187
+ def imageUploadJobName = " ${ JOB_NAME} _imageUpload"
188
+ def imagePullJobName = " ${ JOB_NAME} _imagePull"
189
+ generateJobViaAutoGen(imageUploadJobName)
190
+ generateJobViaAutoGen(imagePullJobName)
191
+
192
+ def imageUploadJobs = [:]
193
+ def target = " testList TESTLIST=disabled.criu_pingPerf_testCreateRestoreImageAndPushToRegistry,disabled.criu-portable-checkpoint_test,disabled.criu-ubi-portable-checkpoint_test"
194
+ echo " Trigger ${ imageUploadJobName} job ..."
195
+ for (int i = 0 ; i < imageUploadMap[params. PLATFORM ]. size(); i++ ) {
196
+ def labelAddition = imageUploadMap[params. PLATFORM ][i]. LABEL_ADDITION
197
+ def newParams = [" LABEL_ADDITION" : labelAddition, " TARGET" : " ${ target} " , " DOCKER_REGISTRY_DIR" : " ${ JOB_NAME} :${ BUILD_NUMBER} " ]
198
+ def childParams = changeParam(params, newParams)
199
+ imageUploadJobs[" ${ imageUploadJobName} _${ i} ]" ] = {
200
+ build job : imageUploadJobName, parameters : childParams
201
+ }
202
+ }
203
+ parallel imageUploadJobs
204
+
205
+ def imagePullJobs = [:]
206
+ echo " Trigger ${ imagePullJobName} job ..."
207
+ for (int i = 0 ; i < imagePullMap[params. PLATFORM ]. size(); i++ ) {
208
+ def labelAddition = imagePullMap[params. PLATFORM ][i]. LABEL_ADDITION
209
+ def newParams = [" LABEL_ADDITION" : labelAddition, " DOCKER_REGISTRY_DIR" : " ${ JOB_NAME} :${ BUILD_NUMBER} " ]
210
+ def childParams = changeParam(params, newParams)
211
+ imagePullJobs[" ${ imagePullJobName} _${ i} ]" ] = {
212
+ build job : imagePullJobName, parameters : childParams
213
+ }
214
+ }
215
+ parallel imagePullJobs
216
+ } else {
217
+ assert false : " Cannot find key PLATFORM: ${ params.PLATFORM} in imageGenMap: ${ imageGenMap} and/or imagePullMap: ${ imagePullMap} ."
218
+ }
165
219
} else {
166
220
if (PLATFORM_MAP . containsKey(params. PLATFORM )) {
167
221
env. EXTRA_OPTIONS = params. EXTRA_OPTIONS ? params. EXTRA_OPTIONS : " "
@@ -466,3 +520,60 @@ def forceCleanWS() {
466
520
}
467
521
}
468
522
523
+ def changeParam (paramsList , newParams ) {
524
+ def childParams = []
525
+ // loop through all the params and change the parameters if needed
526
+ paramsList. each { param ->
527
+ def value = param. value. toString()
528
+ newParams. each { newParam ->
529
+
530
+ if (param. key == newParam. key) {
531
+ value = newParam. value. toString()
532
+ }
533
+ }
534
+ if (value == " true" || value == " false" ) {
535
+ childParams << booleanParam(name : param. key, value : value. toBoolean())
536
+ } else {
537
+ childParams << string(name : param. key, value : value)
538
+ }
539
+ }
540
+ return childParams
541
+ }
542
+
543
+ def generateJobViaAutoGen (testJobName ) {
544
+ def JobHelper = library(identifier : ' openjdk-jenkins-helper@master' ). JobHelper
545
+ if (params. GENERATE_JOBS || ! JobHelper . jobIsRunnable(testJobName as String )) {
546
+ def jobParams = []
547
+ jobParams << string(name : ' TEST_JOB_NAME' , value : testJobName)
548
+ jobParams << string(name : ' ARCH_OS_LIST' , value : params. PLATFORM )
549
+ jobParams << booleanParam(name : ' LIGHT_WEIGHT_CHECKOUT' , value : false )
550
+
551
+ def jdk_impl = params. JDK_IMPL ?: " "
552
+ def jdk_version = params. JDK_VERSION ?: " "
553
+ if (testJobName. startsWith(" Test_openjdk" )) {
554
+ def tokens = testJobName. split(' _' );
555
+ def level = " "
556
+ def group = " "
557
+ if (tokens. size() > 3 ) {
558
+ if (! jdk_version) {
559
+ jdk_version = tokens[1 ]
560
+ }
561
+ if (! jdk_impl) {
562
+ jdk_impl = tokens[2 ]
563
+ }
564
+ if (tokens[3 ]. contains(" ." )) {
565
+ level = tokens[3 ]. split(" \\ ." )[0 ]
566
+ group = tokens[3 ]. split(" \\ ." )[1 ]
567
+ if (level && group) {
568
+ jobParams << string(name : ' LEVELS' , value : level)
569
+ jobParams << string(name : ' GROUPS' , value : group)
570
+ }
571
+ }
572
+ }
573
+ }
574
+ jobParams << string(name : ' JDK_IMPL' , value : jdk_impl)
575
+ jobParams << string(name : ' JDK_VERSIONS' , value : jdk_version)
576
+
577
+ build job : ' Test_Job_Auto_Gen' , parameters : jobParams, propagate : true
578
+ }
579
+ }
0 commit comments