@@ -6,10 +6,17 @@ def TARGETS = params.TARGETS ?: "Grinder"
6
6
TARGETS = TARGETS . trim(). split(" \\ s*,\\ s*" )
7
7
8
8
def PARALLEL = params. PARALLEL ? params. PARALLEL : " Dynamic"
9
- def NUM_MACHINES = params. NUM_MACHINES ? params. NUM_MACHINES : 3
9
+
10
+ def NUM_MACHINES = " "
11
+ if (params. NUM_MACHINES ) {
12
+ NUM_MACHINES = params. NUM_MACHINES
13
+ } else if (! params. TEST_TIME && PARALLEL == " Dynamic" ) {
14
+ // set default NUM_MACHINES to 3 if params.NUM_MACHINES and params.TEST_TIME are not set and PARALLEL is Dynamic
15
+ NUM_MACHINES = 3
16
+ }
10
17
def SDK_RESOURCE = params. SDK_RESOURCE ? params. SDK_RESOURCE : " releases"
11
18
def TIME_LIMIT = params. TIME_LIMIT ? params. TIME_LIMIT : 10
12
- def AUTO_AQA_GEN = params. AUTO_AQA_GEN ? params. AUTO_AQA_GEN : false
19
+ def AUTO_AQA_GEN = params. AUTO_AQA_GEN ? params. AUTO_AQA_GEN . toBoolean() : false
13
20
def TRSS_URL = params. TRSS_URL ? params. TRSS_URL : " https://trss.adoptium.net/"
14
21
def TEST_FLAG = (params. TEST_FLAG ) ?: " "
15
22
def LIGHT_WEIGHT_CHECKOUT = params. LIGHT_WEIGHT_CHECKOUT ?: false
@@ -18,20 +25,62 @@ def LIGHT_WEIGHT_CHECKOUT = params.LIGHT_WEIGHT_CHECKOUT ?: false
18
25
def DEFAULT_SUFFIX = (env. BUILD_USER_ID ) ? " ${ env.BUILD_USER_ID} - jdk-${ params.JDK_VERSIONS} " : " jdk-${ params.JDK_VERSIONS} "
19
26
def PIPELINE_DISPLAY_NAME = (params. PIPELINE_DISPLAY_NAME ) ? " #${ currentBuild.number} - ${ params.PIPELINE_DISPLAY_NAME} " : " #${ currentBuild.number} - ${ DEFAULT_SUFFIX} "
20
27
21
- def JOBS = [:]
22
-
23
28
// Set the AQA_TEST_PIPELINE Jenkins job displayName
24
29
currentBuild. setDisplayName(PIPELINE_DISPLAY_NAME )
25
30
26
- def suffix = " "
27
- if (TEST_FLAG ) {
28
- suffix = " _" + TEST_FLAG . toLowerCase(). trim()
29
- }
31
+ def defaultTestTargets = " sanity.functional,extended.functional,special.functional,sanity.openjdk,extended.openjdk,sanity.system,extended.system,sanity.perf,extended.perf"
32
+ def defaultFipsTestTargets = " extended.functional,sanity.openjdk,extended.openjdk,sanity.jck,extended.jck,special.jck"
33
+
34
+ JOBS = [:]
35
+ fail = false
30
36
31
- def fail = false
32
- int jobNum = 0
33
37
JDK_VERSIONS . each { JDK_VERSION ->
34
- PLATFORMS . each { PLATFORM ->
38
+ if (params. PLATFORMS == " release" ) {
39
+ def configJson = []
40
+ node(" worker || (ci.role.test&&hw.arch.x86&&sw.os.linux)" ) {
41
+ checkout scm
42
+ dir (env. WORKSPACE ) {
43
+ def filePath = " ./aqa-tests/buildenv/jenkins/config/${ params.VARIANT} /"
44
+ filePath = filePath + " default.json"
45
+ if (fileExists(filePath + " jdk${ JDK_VERSION} .json" )) {
46
+ filePath = filePath + " jdk${ JDK_VERSION} .json"
47
+ }
48
+ configJson = readJSON(file : filePath)
49
+ }
50
+ }
51
+
52
+ configJson. each { item ->
53
+ def releaseTestFlag = " "
54
+ releaseTestFlag = item. TEST_FLAG
55
+ item. PLATFORM_TARGETS . each { pt ->
56
+ pt. each{ p , t ->
57
+ def releasePlatform = p
58
+ def releaseTargets = " "
59
+ if (t. contains(" defaultFipsTestTargets" )) {
60
+ releaseTargets = t. replace(" defaultFipsTestTargets" ," ${ defaultFipsTestTargets} " )
61
+ } else {
62
+ releaseTargets = t. replace(" defaultTestTargets" ," ${ defaultTestTargets} " )
63
+ }
64
+ String [] releasePlatformArray = releasePlatform. split(" \\ s*,\\ s*" )
65
+ String [] releaseTargetsArray = releaseTargets. split(" \\ s*,\\ s*" )
66
+ generateJobs(JDK_VERSION , releaseTestFlag, releasePlatformArray, releaseTargetsArray)
67
+ }
68
+ }
69
+ }
70
+ } else {
71
+ generateJobs(JDK_VERSION , TEST_FLAG , PLATFORMS , TARGETS )
72
+ }
73
+ }
74
+ parallel JOBS
75
+ if (fail ) {
76
+ currentBuild. result = " FAILURE"
77
+ }
78
+
79
+ def generateJobs (jobJdkVersion , jobTestFlag , jobPlatforms , jobTargets ) {
80
+ if (jobTestFlag == " NONE" ) {
81
+ jobTestFlag = " "
82
+ }
83
+ jobPlatforms. each { PLATFORM ->
35
84
String [] tokens = PLATFORM . split(' _' )
36
85
def os = tokens[1 ];
37
86
def arch = tokens[0 ];
@@ -63,30 +112,83 @@ JDK_VERSIONS.each { JDK_VERSION ->
63
112
if (params. VARIANT == " openj9" ) {
64
113
// get IBM Semeru CE
65
114
sdk_resource_value = " customized"
66
- download_url= " https://ibm.com/semeru-runtimes/api/v3/binary/latest/${ JDK_VERSION } /ga/${ os} /${ arch} /jdk/openj9/normal/ibm_ce https://ibm.com/semeru-runtimes/api/v3/binary/latest/${ JDK_VERSION } /ga/${ os} /${ arch} /testimage/openj9/normal/ibm_ce"
115
+ download_url= " https://ibm.com/semeru-runtimes/api/v3/binary/latest/${ jobJdkVersion } /ga/${ os} /${ arch} /jdk/openj9/normal/ibm_ce https://ibm.com/semeru-runtimes/api/v3/binary/latest/${ jobJdkVersion } /ga/${ os} /${ arch} /testimage/openj9/normal/ibm_ce"
67
116
}
68
117
}
69
118
echo " download_url: ${ download_url} "
70
119
71
- TARGETS . each { TARGET ->
120
+ jobTargets . each { TARGET ->
72
121
def TEST_JOB_NAME = " Grinder"
73
122
if (TARGET . contains(" Grinder" )) {
74
123
TEST_JOB_NAME = TARGET
75
124
} else {
76
- TEST_JOB_NAME = " Test_openjdk${ JDK_VERSION} _${ short_name} _${ TARGET} _${ PLATFORM}${ suffix} "
125
+ def suffix = " "
126
+ if (jobTestFlag) {
127
+ suffix = " _" + jobTestFlag. toLowerCase(). trim()
128
+ }
129
+ TEST_JOB_NAME = " Test_openjdk${ jobJdkVersion} _${ short_name} _${ TARGET} _${ PLATFORM}${ suffix} "
77
130
}
78
131
echo " TEST_JOB_NAME: ${ TEST_JOB_NAME} "
79
132
80
133
def keep_reportdir = false
81
- if (TARGET . contains(" jck" ) || TARGET . contains(" openjdk" ) || TARGET . contains(" osb" )) {
134
+ if (TARGET . contains(" functional " ) || TARGET . contains( " jck" ) || TARGET . contains(" openjdk" ) || TARGET . contains(" osb" )) {
82
135
keep_reportdir = true
83
136
}
84
- if (TARGET . contains(" functional" ) || TARGET . contains(" perf" )) {
85
- if (params. VARIANT == " temurin" ) {
86
- PARALLEL = " None"
137
+
138
+ def DYNAMIC_COMPILE = false
139
+ if (! params. DYNAMIC_COMPILE ) {
140
+ if ((" ${ TARGET} " . contains(' functional' )) || (" ${ TARGET} " . contains(' external' ))) {
141
+ DYNAMIC_COMPILE = true
142
+ } else {
143
+ DYNAMIC_COMPILE = false
87
144
}
145
+ } else {
146
+ DYNAMIC_COMPILE = params. DYNAMIC_COMPILE ? params. DYNAMIC_COMPILE . toBoolean() : false
88
147
}
89
148
149
+ def VENDOR_TEST_REPOS = ' '
150
+ def VENDOR_TEST_BRANCHES = ' '
151
+ def VENDOR_TEST_DIRS = ' '
152
+ int rerunIterations = params. RERUN_ITERATIONS ? params. RERUN_ITERATIONS . toInteger() : 0
153
+ def buildList = params. BUILD_LIST ?: " "
154
+ if (params. VARIANT == " openj9" ) {
155
+ // default rerunIterations is 3 for openj9
156
+ rerunIterations = params. RERUN_ITERATIONS ? params. RERUN_ITERATIONS . toInteger() : 3
157
+ if (TARGET . contains(' external' )) {
158
+ PARALLEL = " None"
159
+ rerunIterations = 0
160
+ } else if (TARGET . contains(' functional' )) {
161
+ if (jobTestFlag. contains(" FIPS" )) {
162
+ if (! buildList) {
163
+ buildList = " functional/OpenJcePlusTests,functional/security"
164
+ }
165
+ } else {
166
+ VENDOR_TEST_REPOS = ' [email protected] :runtimes/test.git'
167
+ VENDOR_TEST_BRANCHES = params. ADOPTOPENJDK_BRANCH ?: ' master'
168
+ VENDOR_TEST_DIRS = ' functional'
169
+ }
170
+ } else if (TARGET . contains(' jck' )) {
171
+ VENDOR_TEST_REPOS = ' [email protected] :runtimes/jck.git'
172
+ VENDOR_TEST_BRANCHES = " main"
173
+ VENDOR_TEST_DIRS = ' jck'
174
+ } else if (TARGET . contains(' openjdk' )) {
175
+ // only use osb repo for regular testing
176
+ if (TARGET . contains(' special' ) && jobTestFlag == " " ) {
177
+ VENDOR_TEST_REPOS = ' [email protected] :runtimes/osb-tests.git'
178
+ VENDOR_TEST_BRANCHES = " ibm_tlda"
179
+ VENDOR_TEST_DIRS = ' openjdk'
180
+ }
181
+ }
182
+
183
+ if (jobTestFlag. contains(" FIPS" ) || (TARGET . contains(" dev" ))) {
184
+ rerunIterations = 0
185
+ }
186
+ } else if (params. VARIANT == " temurin" ) {
187
+ if (TARGET . contains(" functional" ) || TARGET . contains(" perf" )) {
188
+ PARALLEL = " None"
189
+ }
190
+ }
191
+ echo " AUTO_AQA_GEN: ${ AUTO_AQA_GEN} "
90
192
// Grinder job has special settings and should be regenerated specifically, not via aqaTestPipeline
91
193
if (AUTO_AQA_GEN && ! TEST_JOB_NAME . contains(" Grinder" )) {
92
194
String [] targetTokens = TARGET . split(" \\ ." )
@@ -96,7 +198,7 @@ JDK_VERSIONS.each { JDK_VERSION ->
96
198
string(name : ' TEST_JOB_NAME' , value : TEST_JOB_NAME ),
97
199
string(name : ' LEVELS' , value : level),
98
200
string(name : ' GROUPS' , value : group),
99
- string(name : ' JDK_VERSIONS' , value : JDK_VERSION ),
201
+ string(name : ' JDK_VERSIONS' , value : jobJdkVersion ),
100
202
string(name : ' ARCH_OS_LIST' , value : PLATFORM ),
101
203
string(name : ' JDK_IMPL' , value : jdk_impl),
102
204
booleanParam(name : ' LIGHT_WEIGHT_CHECKOUT' , value : LIGHT_WEIGHT_CHECKOUT )
@@ -124,8 +226,8 @@ JDK_VERSIONS.each { JDK_VERSION ->
124
226
childParams << booleanParam(name : param. key, value : LIGHT_WEIGHT_CHECKOUT . toBoolean())
125
227
} else if (param. key == " TIME_LIMIT" ) {
126
228
childParams << string(name : param. key, value : TIME_LIMIT . toString())
127
- } else if (param. key == " TRSS_URL " ) {
128
- childParams << string(name : param. key, value : TRSS_URL )
229
+ } else if (param. key == " TEST_FLAG " ) {
230
+ childParams << string(name : param. key, value : jobTestFlag )
129
231
} else if (param. key == " KEEP_REPORTDIR" ) {
130
232
childParams << booleanParam(name : param. key, value : keep_reportdir. toBoolean())
131
233
} else {
@@ -137,17 +239,25 @@ JDK_VERSIONS.each { JDK_VERSION ->
137
239
}
138
240
}
139
241
}
242
+ childParams << booleanParam(name : " DYNAMIC_COMPILE" , value : DYNAMIC_COMPILE . toBoolean())
140
243
childParams << booleanParam(name : " GENERATE_JOBS" , value : AUTO_AQA_GEN . toBoolean())
141
- childParams << string(name : " JDK_VERSION" , value : JDK_VERSION )
142
- childParams << string(name : " PLATFORM" , value : PLATFORM )
143
244
childParams << string(name : " JDK_IMPL" , value : jdk_impl)
245
+ childParams << string(name : " JDK_VERSION" , value : jobJdkVersion)
246
+ childParams << string(name : " PLATFORM" , value : PLATFORM )
247
+ childParams << string(name : " RERUN_ITERATIONS" , value : rerunIterations. toString())
248
+ childParams << string(name : " VENDOR_TEST_BRANCHES" , value : VENDOR_TEST_BRANCHES )
249
+ childParams << string(name : " VENDOR_TEST_DIRS" , value : VENDOR_TEST_DIRS )
250
+ childParams << string(name : " VENDOR_TEST_REPOS" , value : VENDOR_TEST_REPOS )
251
+ if (buildList) {
252
+ childParams << string(name : " BUILD_LIST" , value : buildList)
253
+ }
144
254
145
- jobNum++
255
+ int jobNum = JOBS . size() + 1
146
256
JOBS [" ${ TEST_JOB_NAME} _${ jobNum} " ] = {
147
257
def downstreamJob = build job : TEST_JOB_NAME , parameters : childParams, propagate : false , wait : true
148
258
def downstreamJobResult = downstreamJob. getResult()
149
- echo " ${ TEST_JOB_NAME} result is ${ downstreamJobResult} "
150
- if (downstreamJob . getResult() == ' SUCCESS' || downstreamJob . getResult() == ' UNSTABLE' ) {
259
+ echo " ${ TEST_JOB_NAME} result is ${ downstreamJobResult} "
260
+ if (downstreamJobResult == ' SUCCESS' || downstreamJobResult == ' UNSTABLE' ) {
151
261
echo " [NODE SHIFT] MOVING INTO CONTROLLER NODE..."
152
262
node(" worker || (ci.role.test&&hw.arch.x86&&sw.os.linux)" ) {
153
263
cleanWs disableDeferredWipeout : true , deleteDirs : true
@@ -185,9 +295,4 @@ JDK_VERSIONS.each { JDK_VERSION ->
185
295
}
186
296
}
187
297
}
188
- }
189
- parallel JOBS
190
- if (fail ) {
191
- currentBuild. result = " FAILURE"
192
- }
193
-
298
+ }
0 commit comments