aboutsummaryrefslogtreecommitdiff
path: root/jenkins
diff options
context:
space:
mode:
Diffstat (limited to 'jenkins')
-rw-r--r--jenkins/bisect.jpl145
-rw-r--r--jenkins/build-trigger.jpl152
-rw-r--r--jenkins/build.jpl20
-rw-r--r--jenkins/buster-v4l2.jpl (renamed from jenkins/stretch-v4l2.jpl)6
-rwxr-xr-xjenkins/debian/debos/scripts/buster-v4l2.sh (renamed from jenkins/debian/debos/scripts/stretch-v4l2.sh)2
-rw-r--r--jenkins/dockerfiles/debos/Dockerfile2
-rwxr-xr-xjenkins/kernel-arch-complete.sh34
-rwxr-xr-xjenkins/lava-boot-v2.sh22
-rw-r--r--jenkins/monitor.jpl2
-rw-r--r--jenkins/test-runner.jpl178
10 files changed, 465 insertions, 98 deletions
diff --git a/jenkins/bisect.jpl b/jenkins/bisect.jpl
index f8eb68d..b0eae35 100644
--- a/jenkins/bisect.jpl
+++ b/jenkins/bisect.jpl
@@ -53,8 +53,10 @@ BUILD_ENVIRONMENT
Name of the build environment
LAB
Name of the lab in which to run the bisection tests
-PLAN (boot)
- Name of the test plan
+TEST_PLAN
+ Name of the KernelCI test plan (e.g. baseline)
+TEST_PLAN_VARIANT:
+ Name of the KernelCI test plan variant (e.g. baseline_qemu)
TEST_RUNS (1)
Number of LAVA jobs to run before considering pass or fail.
KCI_API_URL (https://api.kernelci.org)
@@ -84,7 +86,6 @@ TREES_WHITELIST
@Library('kernelci') _
-import org.kernelci.build.Kernel
import org.kernelci.util.Job
/* Working around some seemingly broken Python set-up... */
@@ -210,7 +211,8 @@ git symbolic-ref HEAD refs/heads/${params.KERNEL_BRANCH}
def buildKernel(kdir, kci_core) {
def output = "${kdir}/build-${params.ARCH}-${params.BUILD_ENVIRONMENT}"
dir(kci_core) {
- sh(script: "rm -f ${env._BUILD_JSON}")
+ sh(script: "rm -f ${env._BMETA_JSON}")
+ sh(script: "rm -f ${env._DTBS_JSON}")
sh(script: """\
for d in \$(find ${kdir} -name "build-*" -type d); do
@@ -262,14 +264,10 @@ push_kernel \
""")
}
- sh(script: """\
-./kci_build \
-publish_kernel \
---kdir=${kdir} \
---json-path=${env._BUILD_JSON} \
-""")
-
- stash(name: env._BUILD_JSON, includes: env._BUILD_JSON)
+ dir("${kdir}/_install_") {
+ stash(name: env._BMETA_JSON, includes: env._BMETA_JSON)
+ stash(name: env._DTBS_JSON, includes: env.DTBS_JSON)
+ }
}
}
@@ -284,41 +282,68 @@ def buildRevision(kdir, kci_core, git_rev, name) {
* kernel test with LAVA v2
*/
-def submitJob(kci_core, describe, hook) {
+def fetchLabInfo(kci_core) {
dir(kci_core) {
- sh(script: "rm -rf ${env._BUILD_JSON}; rm -rf data; mkdir data")
- unstash(env._BUILD_JSON)
- sh(script: """
-./lava-v2-jobs-from-api.py \
+ def token = "${params.LAB}-lava-api"
+
+ withCredentials([string(credentialsId: token, variable: 'SECRET')]) {
+ sh(script: """\
+./kci_test \
+get_lab_info \
--lab=${params.LAB} \
---builds=${env._BUILD_JSON} \
---storage=${params.KCI_STORAGE_URL} \
---plans=${params.PLAN} \
---jobs=data \
---arch=${params.ARCH} \
---tree=${params.KERNEL_TREE} \
---describe=${describe} \
---branch=${params.KERNEL_BRANCH} \
---defconfig_full=${params.DEFCONFIG} \
---priority=${params.LAVA_PRIORITY} \
---callback=${params.LAVA_CALLBACK} \
---callback-url=${hook.getURL()} \
---callback-dataset=results \
---callback-type=custom \
---targets=${params.TARGET}
+--lab-json=${env._LAB_JSON} \
+--user=kernel-ci \
+--token=${SECRET} \
""")
+ }
+ stash(name: env._LAB_JSON, includes: env._LAB_JSON)
+ }
+}
+
+def submitJob(kci_core, describe, hook) {
+ dir(kci_core) {
+ sh(script: """\
+rm -f ${env._BMETA_JSON} \
+rm -f ${env._DTBS_JSON} \
+rm -f ${env._LAB_JSON} \
+rm -rf data; mkdir data \
+""")
+ unstash(env._BMETA_JSON)
+ unstash(env._DTBS_JSON)
+ unstash(env._LAB_JSON)
def egg_cache = eggCache()
def token = "${params.LAB}-lava-api"
+ /* ToDo: deal with params.LAVA_PRIORITY or drop it */
+
withCredentials([string(credentialsId: token, variable: 'SECRET')]) {
- sh(script: """
-PYTHON_EGG_CACHE=${egg_cache} \
-./lava-v2-submit-jobs.py \
---username=kernel-ci \
+ sh(script: """ \
+./kci_test \
+generate \
+--bmeta-json=${env._BMETA_JSON} \
+--dtbs-json=${env._DTBS_JSON} \
+--lab-json=${env._LAB_JSON} \
+--storage=${params.KCI_STORAGE_URL} \
+--lab=${params.LAB} \
+--user=kernel-ci \
--token=${SECRET} \
+--output=data \
+--callback-id=${params.LAVA_CALLBACK} \
+--callback-url=${hook.getURL()} \
+--callback-dataset=results \
+--callback-type=custom \
+--target=${params.TARGET} \
+--plan=${params.TEST_PLAN_VARIANT} \
+""")
+
+ sh(script: """ \
+./kci_test \
+submit \
--lab=${params.LAB} \
---jobs=data
+--user=kernel-ci \
+--token=${SECRET} \
+--jobs=data/* \
""")
}
}
@@ -381,7 +406,7 @@ def runTest(kci_core, describe, expected=0, runs=0) {
* bisection
*/
-def findMergeBase(kdir, good, bad) {
+def findMergeBase(kdir, kci_core, good, bad) {
def base = good
dir(kdir) {
@@ -390,16 +415,32 @@ def findMergeBase(kdir, good, bad) {
script: "git merge-base --is-ancestor ${base} HEAD")
if (good_base != 0) {
- def ref = "${params.REF_KERNEL_TREE}/${params.REF_KERNEL_BRANCH}"
+ def ref_url = params.REF_KERNEL_URL
+ def ref_tree = params.REF_KERNEL_TREE
+ def ref_branch = params.REF_KERNEL_BRANCH
+
+ if (!(ref_url && ref_tree && ref_branch)) {
+ dir(kci_core) {
+ ref_config = sh(script: """\
+ ./kci_build get_reference --tree-name ${params.KERNEL_TREE} \
+ --branch ${params.KERNEL_BRANCH}""", returnStdout: true).trim().tokenize("\n")
+ if (ref_config.size() > 0) {
+ ref_url = ref_config[0]
+ ref_tree = ref_config[1]
+ ref_branch = ref_config[2]
+ }
+ }
+ }
+ def ref = "${ref_tree}/${ref_branch}"
print("Good commit not in current branch, finding base in ${ref}")
print("""\
Reference:
- Tree: ${params.REF_KERNEL_TREE}
- URL: ${params.REF_KERNEL_URL}
- Branch: ${params.REF_KERNEL_BRANCH}""")
+ Tree: ${ref_tree}
+ URL: ${ref_url}
+ Branch: ${ref_branch}""")
- setRemote(kdir, params.REF_KERNEL_TREE, params.REF_KERNEL_URL)
+ setRemote(kdir, ref_tree, ref_url)
base = sh(script: "git merge-base ${bad} ${ref}",
returnStdout: true).trim()
print("Merge base: ${base}")
@@ -451,7 +492,9 @@ def bisectNext(kdir, status) {
*/
def pushResults(kci_core, kdir, checks, params_summary) {
- def subject = "${params.KERNEL_TREE}/${params.KERNEL_BRANCH} ${params.PLAN} bisection: ${params.KERNEL_NAME} on ${params.TARGET}"
+ def subject = "\
+${params.KERNEL_TREE}/${params.KERNEL_BRANCH} bisection: \
+${params.TEST_PLAN} on ${params.TARGET}"
dir(kci_core) {
withCredentials([string(credentialsId: params.KCI_TOKEN_ID,
@@ -536,10 +579,11 @@ def bisection(kci_core, kdir, checks) {
kci_core: { cloneKciCore(kci_core) },
kdir: { cloneLinux(kdir) },
)
+ fetchLabInfo(kci_core)
}
bad = params.BAD_COMMIT
- good = findMergeBase(kdir, params.GOOD_COMMIT, bad)
+ good = findMergeBase(kdir, kci_core, params.GOOD_COMMIT, bad)
}
stage("Check pass") {
@@ -631,7 +675,9 @@ def bisection(kci_core, kdir, checks) {
node("docker && bisection") {
/* Global pipeline constants */
- env._BUILD_JSON = "build-data.json"
+ env._BMETA_JSON = "bmeta.json"
+ env._DTBS_JSON = "dtbs.json"
+ env._LAB_JSON = "lab-info.json"
def j = new Job()
def kci_core = "${env.WORKSPACE}/kernelci-core"
@@ -648,14 +694,15 @@ node("docker && bisection") {
Lab: ${params.LAB}
Defconfig: ${params.DEFCONFIG}
Compiler: ${params.BUILD_ENVIRONMENT}
- Plan: ${params.PLAN}"""
+ Plan: ${params.TEST_PLAN}
+ Variant: ${params.TEST_PLAN_VARIANT}"""
print("""\
Good: ${params.GOOD_COMMIT}
Bad: ${params.BAD_COMMIT}
${params_summary}""")
- if ((params.PLAN != 'boot') && (params.PLAN != 'simple')) {
- echo "Only doing boot and simple plans for now, aborting."
+ if (params.TEST_PLAN != 'boot') {
+ echo "Only doing boot bisections for now, aborting."
currentBuild.result = 'ABORTED'
return
}
diff --git a/jenkins/build-trigger.jpl b/jenkins/build-trigger.jpl
index 9e23b6f..20e159d 100644
--- a/jenkins/build-trigger.jpl
+++ b/jenkins/build-trigger.jpl
@@ -28,6 +28,8 @@ PUBLISH (boolean)
Publish build results via the KernelCI backend API
EMAIL (boolean)
Send build results via email
+LABS_WHITELIST
+ List of labs to include in the tests, all labs will be tested by default.
KCI_API_URL (https://api.kernelci.org)
URL of the KernelCI backend API
KCI_TOKEN_ID
@@ -45,7 +47,6 @@ ALLOW_REBUILD (false)
*/
@Library('kernelci') _
-import org.kernelci.build.Kernel
import org.kernelci.util.Job
def configAlreadyBuilt(config, kci_core) {
@@ -53,7 +54,7 @@ def configAlreadyBuilt(config, kci_core) {
dir(kci_core) {
new_commit = sh(
- script: """
+ script: """\
./kci_build \
check_new_commit \
--config=${config} \
@@ -73,13 +74,23 @@ update_mirror \
--mirror=${mirror} \
""")
- sh(script: """\
+ while (true) {
+ try {
+ sh(script: """\
./kci_build \
update_repo \
--config=${config} \
--kdir=${kdir} \
--mirror=${mirror} \
""")
+ break
+ } catch (error) {
+ print("Failed to update repo: ${error}")
+ print("Removing clone and retrying")
+ sh(script: "rm -rf ${kdir}")
+ sleep 1
+ }
+ }
def describe_raw = sh(script: """\
./kci_build \
@@ -143,21 +154,10 @@ list_kernel_configs \
}
}
-def addBuildOpts(config, kci_core, opts) {
- dir(kci_core) {
- opts['config'] = config
-
- def opts_raw = sh(
- script: """\
-./kci_build \
-tree_branch \
---config=${config} \
-""", returnStdout: true).trim()
- def opt_list = opts_raw.tokenize('\n')
- opts['tree'] = opt_list[0]
- opts['git_url'] = opt_list[1]
- opts['branch'] = opt_list[2]
+def listArchitectures(kci_core, config) {
+ def arch_list = []
+ dir(kci_core) {
def raw_variants = sh(
script: """\
./kci_build \
@@ -166,7 +166,6 @@ list_variants \
""", returnStdout: true).trim()
def variants = raw_variants.tokenize('\n')
- def arch_list = []
for (String variant: variants) {
def raw_variant_arch_list = sh(
script: """\
@@ -181,11 +180,61 @@ arch_list \
if (!arch_list.contains(arch))
arch_list.add(arch)
}
- opts['arch_list'] = arch_list
}
+
+ return arch_list
}
-def buildKernelStep(job, arch, defconfig, build_env, opts) {
+def addBuildOpts(config, kci_core, opts) {
+ dir(kci_core) {
+ opts['config'] = config
+
+ def opts_raw = sh(
+ script: """\
+./kci_build \
+tree_branch \
+--config=${config} \
+""", returnStdout: true).trim()
+ def opt_list = opts_raw.tokenize('\n')
+ opts['tree'] = opt_list[0]
+ opts['git_url'] = opt_list[1]
+ opts['branch'] = opt_list[2]
+ }
+}
+
+def scheduleTests(build_job_name, build_job_number, labs, kci_core) {
+ dir(kci_core) {
+ def labs_str = ""
+ for (lab in labs)
+ labs_str += "${lab} "
+
+ def str_params = [
+ 'LABS': labs_str.trim(),
+ 'TRIGGER_JOB_NAME': env.JOB_NAME,
+ 'TRIGGER_JOB_NUMBER': env.BUILD_NUMBER,
+ 'BUILD_JOB_NAME': build_job_name,
+ 'BUILD_JOB_NUMBER': "${build_job_number}",
+ ]
+ def params = []
+
+ def j = new Job()
+ j.addStrParams(params, str_params)
+ build(job: 'test-runner', parameters: params, propagate: false)
+ }
+}
+
+def buildKernelStep(job, arch, defconfig, build_env, opts, labs, kci_core) {
+ def node_label = "builder"
+ def parallel_builds = "4"
+
+ if (defconfig.matches(".*allmodconfig.*")) {
+ node_label = "big-config-builder"
+ parallel_builds = ""
+ } else if (defconfig.matches("^defconfig.*") && arch == "arm64") {
+ node_label = "medium-config-builder"
+ parallel_builds = ""
+ }
+
def str_params = [
'ARCH': arch,
'DEFCONFIG': defconfig,
@@ -195,13 +244,20 @@ def buildKernelStep(job, arch, defconfig, build_env, opts) {
'SRC_TARBALL': opts['tarball_url'],
'BUILD_CONFIG': opts['config'],
'BUILD_ENVIRONMENT': build_env,
+ 'NODE_LABEL': node_label,
+ 'PARALLEL_BUILDS': parallel_builds,
]
def job_params = []
def j = new Job()
j.addStrParams(job_params, str_params)
- return { build(job: job, parameters: job_params, propagate: false) }
+ return {
+ def res = build(job: job, parameters: job_params, propagate: false)
+ print("${res.number}: ${arch} ${defconfig} ${build_env} ${res.result}")
+ if (res.result == "SUCCESS")
+ scheduleTests(job, res.number, labs, kci_core)
+ }
}
def buildsComplete(job, opts, arch) {
@@ -225,10 +281,10 @@ def buildsComplete(job, opts, arch) {
node("docker && build-trigger") {
def j = new Job()
- def k = new Kernel()
def kci_core = "${env.WORKSPACE}/kernelci-core"
def kdir = "${env.WORKSPACE}/configs/${params.BUILD_CONFIG}"
def mirror = "${env.WORKSPACE}/linux.git"
+ def labs_info = "${env.WORKSPACE}/labs"
def docker_image = "${params.DOCKER_BASE}base"
def opts = [:]
def configs = []
@@ -238,11 +294,57 @@ node("docker && build-trigger") {
Container: ${docker_image}""")
j.dockerPullWithRetry(docker_image).inside() {
+ def labs = []
+
stage("Init") {
timeout(time: 15, unit: 'MINUTES') {
j.cloneKciCore(
kci_core, params.KCI_CORE_URL, params.KCI_CORE_BRANCH)
}
+
+ sh(script: "rm -rf ${labs_info}; mkdir -p ${labs_info}")
+
+ dir(kci_core) {
+ def raw_lab_names = sh(
+ script: "./kci_test list_labs", returnStdout: true).trim()
+ def all_lab_names = raw_lab_names.tokenize('\n')
+ def labs_list = []
+
+ if (params.LABS_WHITELIST) {
+ def whitelist = params.LABS_WHITELIST.tokenize(' ')
+
+ for (lab in all_lab_names)
+ if (whitelist.contains(lab))
+ labs_list.add(lab)
+ } else {
+ labs_list = all_lab_names
+ }
+
+ for (lab in labs_list) {
+ def lab_json = "${labs_info}/${lab}.json"
+ def token = "${lab}-lava-api"
+ try {
+ withCredentials([string(credentialsId: token,
+ variable: 'SECRET')]) {
+ sh(script: """\
+./kci_test \
+get_lab_info \
+--lab=${lab} \
+--lab-json=${lab_json} \
+--user=kernel-ci \
+--token=${SECRET} \
+""")
+ }
+ labs.add(lab)
+ } catch (error) {
+ print("Error with ${lab}: ${error}")
+ }
+ }
+ }
+
+ dir(labs_info) {
+ archiveArtifacts("*.json")
+ }
}
if (params.ALLOW_REBUILD != true) {
@@ -276,7 +378,8 @@ node("docker && build-trigger") {
print(step_name)
builds[step_name] = buildKernelStep(
- "kernel-build", arch, defconfig, build_env, opts)
+ "kernel-build", arch, defconfig, build_env, opts, labs,
+ kci_core)
i += 1
}
@@ -286,7 +389,8 @@ node("docker && build-trigger") {
stage("Complete") {
/* ToDo: convert kernel-arch-complete as a stage in this job */
- for (String arch: opts['arch_list']) {
+ def arch_list = listArchitectures(kci_core, params.BUILD_CONFIG)
+ for (String arch: arch_list) {
buildsComplete("kernel-arch-complete", opts, arch)
}
}
diff --git a/jenkins/build.jpl b/jenkins/build.jpl
index ed1b106..05bdeeb 100644
--- a/jenkins/build.jpl
+++ b/jenkins/build.jpl
@@ -38,6 +38,8 @@ COMMIT_ID
Git commit SHA1 at the revision of the snapshot
BUILD_ENVIRONMENT
Name of the build environment
+NODE_LABEL
+ Label to use to choose a node on which to run this job
PUBLISH (boolean)
Publish build results via the KernelCI backend API
EMAIL (boolean)
@@ -59,10 +61,11 @@ PARALLEL_BUILDS
@Library('kernelci') _
-import org.kernelci.build.Kernel
import org.kernelci.util.Job
def buildConfig(kdir, kci_core) {
+ def jopt = ""
+
if (params.PARALLEL_BUILDS)
jopt = "-j${params.PARALLEL_BUILDS}"
@@ -108,11 +111,14 @@ publish_kernel \
""")
}
}
+
+ dir("linux/_install_") {
+ archiveArtifacts("*.json")
+ }
}
-node("docker && builder") {
+node("docker" && params.NODE_LABEL) {
def j = new Job()
- def k = new Kernel()
def kci_core = "${env.WORKSPACE}/kernelci-core"
def kdir = "${env.WORKSPACE}/linux"
def docker_image = null
@@ -135,7 +141,13 @@ node("docker && builder") {
j.dockerPullWithRetry(docker_image).inside() {
stage("Init") {
timeout(time: 30, unit: 'MINUTES') {
- k.downloadTarball(kdir, params.SRC_TARBALL)
+ dir(kci_core) {
+ sh(script: """./kci_build pull_tarball \
+ --kdir ${kdir} \
+ --url ${params.SRC_TARBALL} \
+ --retries=12 \
+ """)
+ }
}
}
diff --git a/jenkins/stretch-v4l2.jpl b/jenkins/buster-v4l2.jpl
index 9ef7b48..c88163b 100644
--- a/jenkins/stretch-v4l2.jpl
+++ b/jenkins/buster-v4l2.jpl
@@ -11,12 +11,12 @@ DOCKER_BASE
def r = new RootFS()
-def config = ['name':"stretch-v4l2",
+def config = ['name':"buster-v4l2",
'arch_list':["armhf", "arm64", "amd64"],
- 'debian_release':"stretch",
+ 'debian_release':"buster",
'extra_packages':"",
'extra_packages_remove':"bash e2fsprogs e2fslibs",
- 'script':"scripts/stretch-v4l2.sh",
+ 'script':"scripts/buster-v4l2.sh",
'test_overlay': "overlays/v4l2",
'docker_image': "${params.DOCKER_BASE}debos",
]
diff --git a/jenkins/debian/debos/scripts/stretch-v4l2.sh b/jenkins/debian/debos/scripts/buster-v4l2.sh
index 81015d4..b971274 100755
--- a/jenkins/debian/debos/scripts/stretch-v4l2.sh
+++ b/jenkins/debian/debos/scripts/buster-v4l2.sh
@@ -66,7 +66,7 @@ cd /tmp
rm -rf /tmp/tests
apt-get remove --purge -y ${BUILD_DEPS}
-apt-get remove --purge -y perl-modules-5.24
+apt-get remove --purge -y perl-modules-5.28
apt-get autoremove --purge -y
apt-get clean
diff --git a/jenkins/dockerfiles/debos/Dockerfile b/jenkins/dockerfiles/debos/Dockerfile
index 69f7010..492ffde 100644
--- a/jenkins/dockerfiles/debos/Dockerfile
+++ b/jenkins/dockerfiles/debos/Dockerfile
@@ -1,4 +1,4 @@
-FROM debian:stretch-slim
+FROM debian:buster-slim
ARG DEBIAN_FRONTEND=noninteractive
diff --git a/jenkins/kernel-arch-complete.sh b/jenkins/kernel-arch-complete.sh
index bb0b40b..cdad9ff 100755
--- a/jenkins/kernel-arch-complete.sh
+++ b/jenkins/kernel-arch-complete.sh
@@ -121,8 +121,8 @@ if [[ BUILDS_FINISHED -eq 1 ]]; then
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "send_to": ["krzk@kernel.org", "kgene.kim@samsung.com", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 12600}' ${API}/send
elif [ "$TREE_NAME" == "agross" ]; then
echo "Sending results to Andy Gross"
- curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "send_to": ["agross@codeaurora.org", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 10}' ${API}/send
- curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "send_to": ["agross@codeaurora.org", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 12600}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "send_to": ["agross@kernel.org", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 10}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "send_to": ["agross@kernel.org", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 12600}' ${API}/send
elif [ "$TREE_NAME" == "broonie-regmap" ]; then
echo "Sending results to Mark Brown"
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "send_to": ["broonie@kernel.org", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 10}' ${API}/send
@@ -151,6 +151,7 @@ if [[ BUILDS_FINISHED -eq 1 ]]; then
echo "Sending results to Ard Biesheuvel"
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "send_to": ["ard.biesheuvel@linaro.org", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 10}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "send_to": ["ard.biesheuvel@linaro.org", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 12600}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan: "baseline-uefi", "send_to": ["ard.biesheuvel@linaro.org", "anders.roxell@linaro.org", "fellows@kernelci.org"], "format": ["txt""], "delay": 10}' ${API}/send
elif [ "$TREE_NAME" == "evalenti" ]; then
echo "Sending results to Eduardo Valentin"
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "send_to": ["edubezval@gmail.com", "fellows@kernelci.org"], "format": ["txt", "html"], "delay": 10}' ${API}/send
@@ -179,6 +180,9 @@ if [[ BUILDS_FINISHED -eq 1 ]]; then
curl -XPOST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "format": ["txt"], "send_to": ["kernel-team+kernelci@android.com", "gregkh@google.com", "fellows@kernelci.org"], "delay": 12600}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "send_to": ["tom.gall@linaro.org", "sumit.semwal@linaro.org", "amit.pundir@linaro.org", "arnd.bergmann@linaro.org", "anmar.oueja@linaro.org"], "format": ["txt"], "delay": 10}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "send_to": ["tom.gall@linaro.org", "sumit.semwal@linaro.org", "amit.pundir@linaro.org", "arnd.bergmann@linaro.org", "anmar.oueja@linaro.org"], "format": ["txt"], "delay": 12600}' ${API}/send
+ if [ "$BRANCH" == "android-3.18" ]; then
+ curl -XPOST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["lee.jones@linaro.org"], "delay": 60}' ${API}/send
+ fi
elif [ "$TREE_NAME" == "mattface" ]; then
echo "Sending results to Matt"
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["matt@mattface.org"], "delay": 60}' ${API}/send
@@ -190,7 +194,7 @@ if [[ BUILDS_FINISHED -eq 1 ]]; then
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline", "send_to": ["guillaume.tucker@collabora.com"], "format": ["txt"], "delay": 1800}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "v4l2-compliance-vivid", "send_to": ["guillaume.tucker@collabora.com"], "format": ["txt"], "delay": 2700}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "v4l2-compliance-uvc", "send_to": ["guillaume.tucker@collabora.com"], "format": ["txt"], "delay": 3600}' ${API}/send
- curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "igt_drm_kms", "send_to": ["guillaume.tucker@collabora.com"], "format": ["txt"], "delay": 3600}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "igt-drm-kms", "send_to": ["guillaume.tucker@collabora.com"], "format": ["txt"], "delay": 3600}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "cros-ec", "send_to": ["guillaume.tucker@collabora.com"], "format": ["txt"], "delay": 3600}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "sleep", "send_to": ["guillaume.tucker@collabora.com"], "format": ["txt"], "delay": 3600}' ${API}/send
elif [ "$TREE_NAME" == "tomeu" ]; then
@@ -218,14 +222,36 @@ if [[ BUILDS_FINISHED -eq 1 ]]; then
echo "Sending results for vireshk's tree"
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["vireshk@kernel.org"], "delay": 60}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "format": ["txt"], "send_to": ["vireshk@kernel.org"], "delay": 2700}' ${API}/send
+ elif [ "$TREE_NAME" == "sashal" ]; then
+ echo "Sending results for sashal's tree"
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["sashal@kernel.org", "kernel-build-reports@lists.linaro.org"], "delay": 60}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "format": ["txt"], "send_to": ["sashal@kernel.org", "kernel-build-reports@lists.linaro.org"], "delay": 2700}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline", "send_to": ["sashal@kernel.org", "kernel-build-reports@lists.linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
+ elif [ "$TREE_NAME" == "thermal" ]; then
+ echo "Sending results for the thermal tree"
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["daniel.lezcano@linaro.org", "kernel-build-reports@lists.linaro.org"], "delay": 60}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "format": ["txt"], "send_to": ["daniel.lezcano@linaro.org", "kernel-build-reports@lists.linaro.org"], "delay": 2700}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline", "send_to": ["daniel.lezcano@linaro.org", "kernel-build-reports@lists.linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
+ elif [ "$TREE_NAME" == "arm64" ]; then
+ echo "Sending results for the arm64 tree"
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["will@kernel.org", "catalin.marinas@arm.com", "linux-arm-kernel@lists.infradead.org", "kernel-build-reports@lists.linaro.org"], "delay": 60}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "format": ["txt"], "send_to": ["will@kernel.org", "catalin.marinas@arm.com", "linux-arm-kernel@lists.infradead.org", "kernel-build-reports@lists.linaro.org"], "delay": 2700}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline", "send_to": ["will@kernel.org", "catalin.marinas@arm.com", "linux-arm-kernel@lists.infradead.org", "kernel-build-reports@lists.linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
+ elif [ "$TREE_NAME" == "lee" ]; then
+ echo "Sending results for lee's tree"
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["lee.jones@linaro org", "kernel-build-reports@lists.linaro.org"], "delay": 60}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "format": ["txt"], "send_to": ["lee.jones@linaro org", "kernel-build-reports@lists.linaro.org"], "delay": 2700}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline", "send_to": ["lee.jones@linaro org", "kernel-build-reports@lists.linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
elif [ "$TREE_NAME" == "kernelci" ]; then
echo "Sending results to kernelci folks"
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "build_report": 1, "format": ["txt"], "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "delay": 0}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "boot_report": 1, "format": ["txt"], "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "delay": 1800}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 1800}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline-uefi", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 1800}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "baseline-fastboot", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 1800}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "v4l2-compliance-vivid", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "v4l2-compliance-uvc", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
- curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "igt_drm_kms", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
+ curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "igt-drm-kms", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "cros-ec", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
curl -X POST -H "Authorization: $EMAIL_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"job": "'$TREE_NAME'", "kernel": "'$GIT_DESCRIBE'", "git_branch": "'$BRANCH'", "report_type": "test", "plan": "sleep", "send_to": ["gtucker@collabora.com", "mgalka@collabora.com", "alexandra.pereira@collabora.com", "dan.rue@linaro.org", "matthew.hart@linaro.org", "broonie@kernel.org", "kernelci@baylibre.com", "anders.roxell@linaro.org"], "format": ["txt"], "delay": 2700}' ${API}/send
else
diff --git a/jenkins/lava-boot-v2.sh b/jenkins/lava-boot-v2.sh
index f8ab5be..7434d07 100755
--- a/jenkins/lava-boot-v2.sh
+++ b/jenkins/lava-boot-v2.sh
@@ -18,22 +18,22 @@ if [ ${LAB} = "lab-tbaker" ] || [ ${LAB} = "lab-tbaker-dev" ]; then
python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp kselftest --token ${API_TOKEN}
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_TBAKER_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-mhart" ] || [ ${LAB} = "lab-mhart-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp simple --token ${API_TOKEN} --priority medium
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp simple --token ${API_TOKEN} --priority medium
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_MHART_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-collabora" ] || [ ${LAB} = "lab-collabora-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp cros-ec igt_drm_kms kselftest simple sleep usb v4l2-compliance-vivid v4l2-compliance-uvc --token ${API_TOKEN} --priority medium
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp cros-ec igt-drm-kms kselftest simple sleep usb v4l2-compliance-vivid v4l2-compliance-uvc --token ${API_TOKEN} --priority medium
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_COLLABORA_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-baylibre" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi kselftest --token ${API_TOKEN} --priority medium
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline baseline-fastboot boot boot-kvm boot-kvm-uefi kselftest --token ${API_TOKEN} --priority medium
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_BAYLIBRE_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-baylibre-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi kselftest --token ${API_TOKEN} --priority medium
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline baseline-fastboot boot boot-kvm boot-kvm-uefi kselftest --token ${API_TOKEN} --priority medium
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_BAYLIBRE_TOKEN} --lab ${LAB}
# for dev lab, also send results to BayLibre kernelCI development backend
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback kernelci-dev-baylibre-callback --callback-url http://kernelci.dev.baylibre.com:8081 --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans simple usb --token ${API_TOKEN} --priority low
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback kernelci-dev-baylibre-callback --callback-url http://kernelci.dev.baylibre.com:8081 --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline simple usb --token ${API_TOKEN} --priority low
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_BAYLIBRE_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-free-electrons" ] || [ ${LAB} = "lab-free-electrons-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp --token ${API_TOKEN} --priority medium
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp --token ${API_TOKEN} --priority medium
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_FREE_ELECTRONS_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-broonie" ]; then
python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp --token ${API_TOKEN}
@@ -42,18 +42,18 @@ elif [ ${LAB} = "lab-embeddedbits" ]; then
python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp --token ${API_TOKEN}
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_EMBEDDEDBITS_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-pengutronix" ] || [ ${LAB} = "lab-pengutronix-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi --token ${API_TOKEN}
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot boot-kvm boot-kvm-uefi --token ${API_TOKEN}
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_PENGUTRONIX_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-linaro-lkft" ] || [ ${LAB} = "lab-linaro-lkft-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot uefi_arm uefi_arm64 uefi_i386 uefi_x86_64 uefi_x86-mixed --token ${API_TOKEN} --priority low
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline baseline-uefi boot --token ${API_TOKEN} --priority low
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_LINARO_LKFT_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-theobroma-systems" ] || [ ${LAB} = "lab-theobroma-systems-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot kselftest --token ${API_TOKEN}
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot kselftest --token ${API_TOKEN}
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_THEOBROMA_SYSTEMS_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-drue" ] || [ ${LAB} = "lab-drue-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp simple sleep --token ${API_TOKEN} --priority medium
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp simple sleep --token ${API_TOKEN} --priority medium
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_DRUE_TOKEN} --lab ${LAB}
elif [ ${LAB} = "lab-clabbe" ] || [ ${LAB} = "lab-clabbe-dev" ]; then
- python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp simple sleep --token ${API_TOKEN} --priority medium
+ python lava-v2-jobs-from-api.py --defconfigs ${DEFCONFIG_COUNT} --callback ${CALLBACK} --api ${API} --storage ${STORAGE} --lab ${LAB} --describe ${GIT_DESCRIBE} --tree ${TREE} --branch ${BRANCH} --arch ${ARCH} --plans baseline boot boot-kvm boot-kvm-uefi boot-nfs boot-nfs-mp simple sleep --token ${API_TOKEN} --priority medium
python lava-v2-submit-jobs.py --username kernel-ci --jobs ${LAB} --token ${LAVA_CLABBE_TOKEN} --lab ${LAB}
fi
diff --git a/jenkins/monitor.jpl b/jenkins/monitor.jpl
index f82a199..953420e 100644
--- a/jenkins/monitor.jpl
+++ b/jenkins/monitor.jpl
@@ -49,7 +49,7 @@ def checkConfig(config, kci_core, trees_dir) {
def commit = sh(
script: """
${kci_core}/kci_build \
---build-configs=${kci_core}/build-configs.yaml \
+--yaml-configs=${kci_core}/build-configs.yaml \
check_new_commit \
--config=${config} \
--storage=${params.KCI_STORAGE_URL} \
diff --git a/jenkins/test-runner.jpl b/jenkins/test-runner.jpl
new file mode 100644
index 0000000..19daff2
--- /dev/null
+++ b/jenkins/test-runner.jpl
@@ -0,0 +1,178 @@
+#!/usr/bin/env groovy
+
+/*
+ Copyright (C) 2019 Collabora Limited
+ Author: Guillaume Tucker <guillaume.tucker@collabora.com>
+
+ This module is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 2.1 of the License, or (at your option)
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+/* ----------------------------------------------------------------------------
+ * Jenkins parameters
+
+LABS
+ Name of the labs where to submit tests
+TRIGGER_JOB_NAME
+ Name of the parent trigger job
+TRIGGER_JOB_NUMBER
+ Number of the parent trigger job
+BUILD_JOB_NAME
+ Name of the job that built the kernel
+BUILD_JOB_NUMBER
+ Number of the job that built the kernel
+KCI_CORE_URL (https://github.com/kernelci/kernelci-core.git)
+ URL of the kernelci-core repository
+KCI_CORE_BRANCH (master)
+ Name of the branch to use in the kernelci-core repository
+KCI_STORAGE_URL (https://storage.kernelci.org/)
+ URL of the KernelCI storage server
+DOCKER_BASE (kernelci/build-)
+ Dockerhub base address used for the build images
+CALLBACK_ID (kernel-ci-callback)
+ Identifier of the callback to look up an authentication token
+CALLBACK_URL (https://api.kernelci.org)
+ Base URL where to send the callbacks
+*/
+
+@Library('kernelci') _
+import org.kernelci.util.Job
+
+def getArtifacts(artifacts)
+{
+ dir(artifacts) {
+ copyArtifacts(
+ projectName: params.BUILD_JOB_NAME,
+ selector: specific("${params.BUILD_JOB_NUMBER}")
+ )
+
+ if (params.TRIGGER_JOB_NAME) {
+ copyArtifacts(
+ projectName: params.TRIGGER_JOB_NAME,
+ selector: specific("${params.TRIGGER_JOB_NUMBER}")
+ )
+ }
+ }
+}
+
+def generateJobs(kci_core, lab, artifacts, jobs_dir)
+{
+ def token = "${lab}-lava-api"
+
+ dir(kci_core) {
+ withCredentials([string(credentialsId: token, variable: 'SECRET')]) {
+ sh(script: """\
+./kci_test \
+generate \
+--bmeta-json=${artifacts}/bmeta.json \
+--dtbs-json=${artifacts}/dtbs.json \
+--lab-json=${artifacts}/${lab}.json \
+--storage=${params.KCI_STORAGE_URL} \
+--lab=${lab} \
+--user=kernel-ci \
+--token=${SECRET} \
+--output=${jobs_dir} \
+--callback-id=${params.CALLBACK_ID} \
+--callback-url=${params.CALLBACK_URL} \
+""")
+ }
+ }
+}
+
+def submitJobs(kci_core, lab, jobs_dir)
+{
+ def token = "${lab}-lava-api"
+
+ dir(kci_core) {
+ withCredentials([string(credentialsId: token, variable: 'SECRET')]) {
+ sh(script: """\
+./kci_test \
+submit \
+--lab=${lab} \
+--user=kernel-ci \
+--token=${SECRET} \
+--jobs=${jobs_dir}/* \
+""")
+ }
+ }
+}
+
+node("docker && test-runner") {
+ def j = new Job()
+ def kci_core = "${env.WORKSPACE}/kernelci-core"
+ def jobs_dir = "${env.WORKSPACE}/jobs"
+ def artifacts = "${env.WORKSPACE}/artifacts"
+ def docker_image = "${params.DOCKER_BASE}base"
+ def labs = params.LABS.tokenize(' ')
+ def labs_submit = []
+
+ print("""\
+ Labs: ${params.LABS}
+ Container: ${docker_image}""")
+
+ j.dockerPullWithRetry(docker_image).inside() {
+ stage("Init") {
+ sh(script: "rm -rf ${artifacts}")
+ sh(script: "rm -rf ${jobs_dir}")
+
+ timeout(time: 15, unit: 'MINUTES') {
+ parallel(
+ kci_core: {
+ j.cloneKciCore(
+ kci_core,
+ params.KCI_CORE_URL, params.KCI_CORE_BRANCH)
+ },
+ artifacts: {
+ getArtifacts(artifacts)
+ },
+ )
+ }
+
+ print("Artifacts:")
+ sh(script: "ls -l ${artifacts}")
+
+ print("Build meta-data:")
+ sh(script: "cat ${artifacts}/bmeta.json")
+ }
+
+ stage("Generate") {
+ for (lab in labs) {
+ def lab_dir = "${jobs_dir}/${lab}"
+ generateJobs(kci_core, lab, artifacts, lab_dir)
+ labs_submit.add(lab)
+ }
+ }
+
+ stage("Submit") {
+ def steps = [:]
+ def i = 0
+
+ for (lab in labs_submit) {
+ def lab_name = "${lab}"
+ def lab_dir = "${jobs_dir}/${lab}"
+ def step_name = "${i} ${lab}"
+
+ print(step_name)
+
+ steps[step_name] = {
+ submitJobs(kci_core, lab_name, lab_dir)
+ }
+
+ i += 1
+ }
+
+ parallel(steps)
+ }
+ }
+}