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