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