Skip to content

Commit 3edf60f

Browse files
committed
[nrf noup] ci: use ci-tools in west manifest
NCSDK-3166: re-run sanitycheck correctly on QEMU failure NCSDK-3134: add PENDING/UNSTABLE github status reports Signed-off-by: Thomas Stilwell <[email protected]>
1 parent d5e6042 commit 3edf60f

File tree

1 file changed

+79
-75
lines changed

1 file changed

+79
-75
lines changed

Jenkinsfile

Lines changed: 79 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -8,73 +8,14 @@ def INPUT_STATE = lib_Main.getInputState(JOB_NAME)
88
def CI_STATE = new HashMap()
99
def TestExecutionList = [:]
1010

11-
12-
def generateParallelStageNRF(subset, compiler, AGENT_LABELS, DOCKER_REG, IMAGE_TAG, JOB_NAME, CI_STATE) {
13-
return {
14-
node (AGENT_LABELS) {
15-
stage('Sanity Check - Zephyr'){
16-
docker.image("$DOCKER_REG/$IMAGE_TAG").inside {
17-
lib_Main.cloneCItools(JOB_NAME)
18-
dir('zephyr') {
19-
checkout scm
20-
CI_STATE.ZEPHYR.REPORT_SHA = lib_Main.checkoutRepo(
21-
CI_STATE.ZEPHYR.GIT_URL, "ZEPHYR", CI_STATE.ZEPHYR, false)
22-
lib_West.AddManifestUpdate("ZEPHYR", 'zephyr',
23-
CI_STATE.ZEPHYR.GIT_URL, CI_STATE.ZEPHYR.GIT_REF, CI_STATE)
24-
}
25-
lib_West.InitUpdate('zephyr')
26-
lib_West.ApplyManifestUpdates(CI_STATE)
27-
dir('zephyr') {
28-
def PLATFORM_ARGS = lib_Main.getPlatformArgs(CI_STATE.ZEPHYR.PLATFORMS)
29-
println "$compiler SANITY NRF PLATFORMS_ARGS = $PLATFORM_ARGS"
30-
sh """
31-
export ZEPHYR_TOOLCHAIN_VARIANT='$compiler' && \
32-
source zephyr-env.sh && \
33-
(./scripts/sanitycheck $SANITYCHECK_OPTIONS $ARCH $PLATFORM_ARGS --subset $subset || $SANITYCHECK_RETRY_CMDS
34-
"""
35-
}
36-
}
37-
cleanWs()
38-
}
39-
}
40-
}
41-
}
42-
43-
def generateParallelStageALL(subset, compiler, AGENT_LABELS, DOCKER_REG, IMAGE_TAG, JOB_NAME, CI_STATE) {
44-
return {
45-
node (AGENT_LABELS) {
46-
stage('Sanity Check - Zephyr'){
47-
docker.image("$DOCKER_REG/$IMAGE_TAG").inside {
48-
lib_Main.cloneCItools(JOB_NAME)
49-
dir('zephyr') {
50-
checkout scm
51-
CI_STATE.ZEPHYR.REPORT_SHA = lib_Main.checkoutRepo(
52-
CI_STATE.ZEPHYR.GIT_URL, "ZEPHYR", CI_STATE.ZEPHYR, false)
53-
lib_West.AddManifestUpdate("ZEPHYR", 'zephyr',
54-
CI_STATE.ZEPHYR.GIT_URL, CI_STATE.ZEPHYR.GIT_REF, CI_STATE)
55-
}
56-
lib_West.InitUpdate('zephyr')
57-
lib_West.ApplyManifestUpdates(CI_STATE)
58-
dir('zephyr') {
59-
sh """
60-
export ZEPHYR_TOOLCHAIN_VARIANT='$compiler' && \
61-
source zephyr-env.sh && \
62-
(./scripts/sanitycheck $SANITYCHECK_OPTIONS $ARCH --subset $subset || $SANITYCHECK_RETRY_CMDS
63-
"""
64-
}
65-
}
66-
}
67-
}
68-
}
69-
}
70-
71-
7211
pipeline {
7312

7413
parameters {
7514
booleanParam(name: 'RUN_DOWNSTREAM', description: 'if false skip downstream jobs', defaultValue: false)
7615
booleanParam(name: 'RUN_TESTS', description: 'if false skip testing', defaultValue: true)
77-
booleanParam(name: 'RUN_BUILD', description: 'if false skip building', defaultValue: false)
16+
booleanParam(name: 'RUN_BUILD', description: 'if false skip building', defaultValue: true)
17+
booleanParam(name: 'RUN_BUILD_UPSTREAM', description: 'if false skip building', defaultValue: true)
18+
string(name: 'SANITYCHECK_RETRY_NUM', description: 'Default number of sanitycheck retries', defaultValue: '7')
7819
string(name: 'PLATFORMS', description: 'Default Platforms to test', defaultValue: 'nrf9160_pca10090 nrf9160_pca10090ns nrf52_pca10040 nrf52840_pca10056')
7920
string(name: 'jsonstr_CI_STATE', description: 'Default State if no upstream job',
8021
defaultValue: INPUT_STATE)
@@ -98,11 +39,8 @@ pipeline {
9839

9940
// ENVs for sanitycheck
10041
ARCH = "-a arm"
101-
SANITYCHECK_OPTIONS = "--inline-logs --enable-coverage -N"
102-
SANITYCHECK_RETRY_CMDS = """
103-
(sleep 10; ./scripts/sanitycheck $SANITYCHECK_OPTIONS --only-failed --outdir=out-2nd-pass) ||
104-
(sleep 10; ./scripts/sanitycheck $SANITYCHECK_OPTIONS --only-failed --outdir=out-3rd-pass))
105-
"""
42+
SANITYCHECK_OPTIONS = "--inline-logs --enable-coverage -N" // DEFAULT: --testcase-root tests
43+
SANITYCHECK_RETRY_CMDS = '' // initialized so that it is shared to parrallel stages
10644
}
10745

10846
stages {
@@ -114,12 +52,13 @@ pipeline {
11452
TestStages["compliance"] = {
11553
node (AGENT_LABELS) {
11654
stage('Compliance Test'){
55+
println "Using Node:$NODE_NAME"
11756
docker.image("$DOCKER_REG/$IMAGE_TAG").inside {
118-
lib_Main.cloneCItools(JOB_NAME)
11957
dir('zephyr') {
12058
checkout scm
12159
CI_STATE.ZEPHYR.REPORT_SHA = lib_Main.checkoutRepo(
12260
CI_STATE.ZEPHYR.GIT_URL, "ZEPHYR", CI_STATE.ZEPHYR, false)
61+
lib_Status.set("PENDING", 'ZEPHYR', CI_STATE);
12362
lib_West.AddManifestUpdate("ZEPHYR", 'zephyr',
12463
CI_STATE.ZEPHYR.GIT_URL, CI_STATE.ZEPHYR.GIT_REF, CI_STATE)
12564
}
@@ -155,7 +94,7 @@ pipeline {
15594

15695
// Run the compliance check
15796
try {
158-
sh "(source ../zephyr/zephyr-env.sh && ../ci-tools/scripts/check_compliance.py $COMPLIANCE_ARGS --commits $COMMIT_RANGE)"
97+
sh "(source ../zephyr/zephyr-env.sh && ../tools/ci-tools/scripts/check_compliance.py $COMPLIANCE_ARGS --commits $COMMIT_RANGE)"
15998
}
16099
finally {
161100
junit 'compliance.xml'
@@ -187,21 +126,27 @@ pipeline {
187126
[INPUT_MAP.keySet().toList(), args].transpose().collectEntries { [(it[0]): it[1]]}
188127
}
189128

129+
SANITYCHECK_RETRY_CMDS_LIST = []
130+
for (i=1; i <= SANITYCHECK_RETRY_NUM.toInteger(); i++) {
131+
SANITYCHECK_RETRY_CMDS_LIST.add("(sleep 30; ./scripts/sanitycheck $SANITYCHECK_OPTIONS --only-failed)")
132+
}
133+
SANITYCHECK_RETRY_CMDS = SANITYCHECK_RETRY_CMDS_LIST.join(' || \n')
134+
190135
def sanityCheckNRFStages = OUTPUT_MAP.collectEntries {
191136
["SanityCheckNRF\n${it.compiler}\n${it.set}" : generateParallelStageNRF(it.set, it.compiler,
192137
AGENT_LABELS, DOCKER_REG, IMAGE_TAG, JOB_NAME, CI_STATE)]
193138
}
194139
TestExecutionList = TestExecutionList.plus(sanityCheckNRFStages)
195140

196-
def sanityCheckALLStages = OUTPUT_MAP.collectEntries {
197-
["SanityCheckALL\nzephyr\n${it.set}" : generateParallelStageALL(it.set, 'zephyr',
198-
AGENT_LABELS, DOCKER_REG, IMAGE_TAG, JOB_NAME, CI_STATE)]
141+
if (CI_STATE.ZEPHYR.RUN_BUILD_UPSTREAM) {
142+
def sanityCheckALLStages = OUTPUT_MAP.collectEntries {
143+
["SanityCheckALL\nzephyr\n${it.set}" : generateParallelStageALL(it.set, 'zephyr',
144+
AGENT_LABELS, DOCKER_REG, IMAGE_TAG, JOB_NAME, CI_STATE)]
145+
}
146+
TestExecutionList = TestExecutionList.plus(sanityCheckALLStages)
199147
}
200-
TestExecutionList = TestExecutionList.plus(sanityCheckALLStages)
201148
}
202149

203-
204-
205150
println "TestExecutionList = $TestExecutionList"
206151

207152
}}}
@@ -258,3 +203,62 @@ pipeline {
258203
}
259204
}
260205
}
206+
207+
def generateParallelStageNRF(subset, compiler, AGENT_LABELS, DOCKER_REG, IMAGE_TAG, JOB_NAME, CI_STATE) {
208+
return {
209+
node (AGENT_LABELS) {
210+
stage('Sanity Check - Zephyr'){
211+
println "Using Node:$NODE_NAME"
212+
docker.image("$DOCKER_REG/$IMAGE_TAG").inside {
213+
dir('zephyr') {
214+
checkout scm
215+
CI_STATE.ZEPHYR.REPORT_SHA = lib_Main.checkoutRepo(
216+
CI_STATE.ZEPHYR.GIT_URL, "ZEPHYR", CI_STATE.ZEPHYR, false)
217+
lib_West.AddManifestUpdate("ZEPHYR", 'zephyr',
218+
CI_STATE.ZEPHYR.GIT_URL, CI_STATE.ZEPHYR.GIT_REF, CI_STATE)
219+
}
220+
lib_West.InitUpdate('zephyr')
221+
lib_West.ApplyManifestUpdates(CI_STATE)
222+
dir('zephyr') {
223+
def PLATFORM_ARGS = lib_Main.getPlatformArgs(CI_STATE.ZEPHYR.PLATFORMS)
224+
println "$compiler SANITY NRF PLATFORMS_ARGS = $PLATFORM_ARGS"
225+
sh """
226+
export ZEPHYR_TOOLCHAIN_VARIANT='$compiler' && \
227+
source zephyr-env.sh && \
228+
./scripts/sanitycheck $SANITYCHECK_OPTIONS $ARCH $PLATFORM_ARGS --subset $subset || $SANITYCHECK_RETRY_CMDS
229+
"""
230+
}
231+
}
232+
cleanWs()
233+
}
234+
}
235+
}
236+
}
237+
238+
def generateParallelStageALL(subset, compiler, AGENT_LABELS, DOCKER_REG, IMAGE_TAG, JOB_NAME, CI_STATE) {
239+
return {
240+
node (AGENT_LABELS) {
241+
stage('Sanity Check - Zephyr'){
242+
println "Using Node:$NODE_NAME"
243+
docker.image("$DOCKER_REG/$IMAGE_TAG").inside {
244+
dir('zephyr') {
245+
checkout scm
246+
CI_STATE.ZEPHYR.REPORT_SHA = lib_Main.checkoutRepo(
247+
CI_STATE.ZEPHYR.GIT_URL, "ZEPHYR", CI_STATE.ZEPHYR, false)
248+
lib_West.AddManifestUpdate("ZEPHYR", 'zephyr',
249+
CI_STATE.ZEPHYR.GIT_URL, CI_STATE.ZEPHYR.GIT_REF, CI_STATE)
250+
}
251+
lib_West.InitUpdate('zephyr')
252+
lib_West.ApplyManifestUpdates(CI_STATE)
253+
dir('zephyr') {
254+
sh """
255+
export ZEPHYR_TOOLCHAIN_VARIANT='$compiler' && \
256+
source zephyr-env.sh && \
257+
./scripts/sanitycheck $SANITYCHECK_OPTIONS $ARCH --subset $subset || $SANITYCHECK_RETRY_CMDS
258+
"""
259+
}
260+
}
261+
}
262+
}
263+
}
264+
}

0 commit comments

Comments
 (0)