diff options
author | Bill Fletcher <bill.fletcher@linaro.org> | 2017-11-14 16:32:49 +0000 |
---|---|---|
committer | Bill Fletcher <bill.fletcher@linaro.org> | 2017-11-14 16:32:49 +0000 |
commit | fb899e4b2e1f7053b9c6dec3e4e471c48928c89d (patch) | |
tree | f17e5000b695ac4eee0ab80728cbe4fcdb33b9c9 | |
parent | cf7632bae42ea2294726f98d2c544b51c0dd9ddc (diff) |
-rw-r--r-- | zephyr-tutorial.yaml | 114 | ||||
-rwxr-xr-x | zephyr-tutorial/builders.sh | 54 | ||||
-rw-r--r-- | zephyr-tutorial/lava-job-definitions/arduino101/template.yaml | 57 | ||||
-rw-r--r-- | zephyr-tutorial/lava-job-definitions/frdm-k64f/template.yaml | 49 | ||||
-rw-r--r-- | zephyr-tutorial/lava-job-definitions/frdm-kw41z/template.yaml | 49 | ||||
-rw-r--r-- | zephyr-tutorial/lava-job-definitions/qemu/template.yaml | 55 | ||||
-rw-r--r-- | zephyr-tutorial/submit_to_lava_lite.py | 78 |
7 files changed, 456 insertions, 0 deletions
diff --git a/zephyr-tutorial.yaml b/zephyr-tutorial.yaml new file mode 100644 index 00000000..19966a36 --- /dev/null +++ b/zephyr-tutorial.yaml @@ -0,0 +1,114 @@ +- job: + name: zephyr-tutorial + project-type: matrix + defaults: global + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + - job-workspace + linaro: + - job-read + - job-extended-read + - job-build + - job-cancel + - build-discarder: + days-to-keep: 10 + num-to-keep: 10 + artifact-num-to-keep: 10 + - throttle: + option: category + categories: [lite-zephyr] + matrix-builds: false + matrix-configs: true + parameters: + - string: + name: BRANCH + default: 'tutorial' + - string: + name: LAVA_SERVER + default: 'validation.linaro.org/RPC2/' + - string: + name: GIT_COMMIT + default: '' + disabled: false + node: master + child-workspace: . + display-name: 'Zephyr project CI tutorial' + axes: + - axis: + type: slave + name: label + values: + - docker-xenial-amd64-13 + - axis: + type: user-defined + name: PLATFORM + values: + - frdm_k64f + - frdm_kw41z + - qemu_cortex_m3 + wrappers: + - timestamps + - credentials-binding: + - text: + credential-id: LAVA_USER + variable: LAVA_USER + - credentials-binding: + - text: + credential-id: LAVA_TOKEN + variable: LAVA_TOKEN + builders: + - shell: + !include-raw: zephyr-upstream/builders.sh + - inject: + properties-file: env_var_parameters + - build-name-setter: + template: '#${BUILD_NUMBER}-${GIT_COMMIT}' + macro: true + - linaro-publish-token + - shell: | + #!/bin/bash + + # Publish + test -d ${HOME}/bin || mkdir ${HOME}/bin + wget -q https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py + time python ${HOME}/bin/linaro-cp.py \ + --api_version 3 \ + --link-latest \ + out/${PLATFORM} components/kernel/zephyr/${BRANCH}/${PLATFORM}/${BUILD_NUMBER} + + - shell: | + #!/bin/bash -e + + case "${PLATFORM}" in + frdm_k64f) + export DEVICE_TYPE=frdm-k64f + ;; + frdm_kw41z) + export DEVICE_TYPE=frdm-kw41z + ;; + qemu_cortex_m3) + export DEVICE_TYPE=qemu + ;; + *) + echo "Skip DEVICE_TYPE for ${PLATFORM}" + ;; + esac + + rm -rf configs + git clone --depth 1 http://git.linaro.org/people/bill.fletcher/configs.git + + python configs/zephyr-tutorial/submit_to_lava_lite.py \ + --board-name ${PLATFORM} \ + --device-type ${DEVICE_TYPE} \ + --build-number ${BUILD_NUMBER} \ + --branch-name ${BRANCH} \ + --build-url ${BUILD_URL} \ + --lava-server ${LAVA_SERVER} \ + + rm -rf out + publishers: + - email: + recipients: 'bill.fletcher@linaro.org' diff --git a/zephyr-tutorial/builders.sh b/zephyr-tutorial/builders.sh new file mode 100755 index 00000000..ffd37011 --- /dev/null +++ b/zephyr-tutorial/builders.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +sudo apt-get -q=2 update +sudo apt-get -q=2 -y install git g++ g++-multilib gperf python3-ply \ + python3-yaml gcc-arm-none-eabi python-requests rsync device-tree-compiler \ + python3-pip + +set -ex + +# Distro package is too old for Zephyr +sudo pip3 install pyelftools pykwalify + +git clone -b ${BRANCH} https://git.linaro.org/lite/zephyr.git ${WORKSPACE} +git clean -fdx +if [ -n "${GIT_COMMIT}" ]; then + git reset --hard ${GIT_COMMIT} +fi +echo "GIT_COMMIT=$(git rev-parse --short=8 HEAD)" > env_var_parameters + +head -5 Makefile + +# Toolchains are pre-installed and come from: +# https://github.com/zephyrproject-rtos/meta-zephyr-sdk/releases/download/0.9.2/zephyr-sdk-0.9.2-setup.run +# To install Zephyr SDK: ./zephyr-sdk-0.9.2-setup.run --quiet --nox11 -- <<< "${HOME}/srv/toolchain/zephyr-sdk-0.9.2" + +export ZEPHYR_SDK_INSTALL_DIR="${HOME}/srv/toolchain/zephyr-sdk-0.9.2" + +# Set build environment variables +LANG=C +ZEPHYR_BASE=${WORKSPACE} +PATH=${ZEPHYR_BASE}/scripts:${PATH} +OUTDIR=${HOME}/srv/zephyr/${PLATFORM} +export LANG ZEPHYR_BASE PATH +env |grep '^ZEPHYR' + +echo "" +echo "########################################################################" +echo " make -C tests/kernel/common " +echo "########################################################################" + +cd ${WORKSPACE} +make -C ${WORKSPACE}/tests/kernel/common O=${OUTDIR} BOARD=${PLATFORM} + +# OUTDIR is per-platform. +find ${OUTDIR} -type f -name '.config' -exec rename 's/.config/zephyr.config/' {} + +rsync -avm \ + --include=zephyr.bin \ + --include=zephyr.config \ + --include=zephyr.elf \ + --include='*/' \ + --exclude='*' \ + ${OUTDIR} out/ +find ${OUTDIR} -type f -name 'zephyr.config' -delete + diff --git a/zephyr-tutorial/lava-job-definitions/arduino101/template.yaml b/zephyr-tutorial/lava-job-definitions/arduino101/template.yaml new file mode 100644 index 00000000..67d15ebf --- /dev/null +++ b/zephyr-tutorial/lava-job-definitions/arduino101/template.yaml @@ -0,0 +1,57 @@ +# Zephyr JOB definition for Arduino101 +device_type: '$device_type' +job_name: 'zephyr-upstream $test_name' + +timeouts: + job: + minutes: 30 + action: + minutes: 5 + actions: + lava-test-monitor: + seconds: 300 + wait-usb-device: + seconds: 20 + flash-dfu: + seconds: 60 + connections: + lava-test-monitor: + seconds: 300 + +priority: medium +visibility: public + +actions: +- deploy: + timeout: + minutes: 3 + to: tmpfs + images: + app: + image_arg: --alt x86_app --download {app} + url: '$test_url' + +- boot: + method: dfu + timeout: + minutes: 10 + +- test: + timeout: + minutes: 10 + monitors: + - name: '$test_name' + start: (tc_start\(\)|starting .*test|BOOTING ZEPHYR OS) + end: PROJECT EXECUTION + pattern: (?P<result>(PASS|FAIL))\s-\s(?P<test_case_id>\w+)\. + fixupdict: + PASS: pass + FAIL: fail + +metadata: + build-url: $build_url + build-log: $build_url/consoleText + zephyr-gcc-variant: $gcc_variant + platform: $board_name + git-url: https://git.linaro.org/zephyrproject-org/zephyr.git + git-commit: $git_commit diff --git a/zephyr-tutorial/lava-job-definitions/frdm-k64f/template.yaml b/zephyr-tutorial/lava-job-definitions/frdm-k64f/template.yaml new file mode 100644 index 00000000..f0c44244 --- /dev/null +++ b/zephyr-tutorial/lava-job-definitions/frdm-k64f/template.yaml @@ -0,0 +1,49 @@ +# Zephyr JOB definition for frdm-k64f +device_type: '$device_type' +job_name: 'zephyr-upstream $test_name' + +timeouts: + job: + minutes: 30 + action: + minutes: 3 + actions: + wait-usb-device: + seconds: 40 + +priority: medium +visibility: public + +actions: +- deploy: + timeout: + minutes: 3 + to: tmpfs + images: + zephyr: + url: '$test_url' + +- boot: + method: cmsis-dap + timeout: + minutes: 10 + +- test: + timeout: + minutes: 10 + monitors: + - name: '$test_name' + start: (tc_start\(\)|starting .*test|BOOTING ZEPHYR OS) + end: PROJECT EXECUTION + pattern: (?P<result>(PASS|FAIL))\s-\s(?P<test_case_id>\w+)\. + fixupdict: + PASS: pass + FAIL: fail + +metadata: + build-url: $build_url + build-log: $build_url/consoleText + zephyr-gcc-variant: $gcc_variant + platform: $board_name + git-url: https://git.linaro.org/zephyrproject-org/zephyr.git + git-commit: $git_commit diff --git a/zephyr-tutorial/lava-job-definitions/frdm-kw41z/template.yaml b/zephyr-tutorial/lava-job-definitions/frdm-kw41z/template.yaml new file mode 100644 index 00000000..6165856a --- /dev/null +++ b/zephyr-tutorial/lava-job-definitions/frdm-kw41z/template.yaml @@ -0,0 +1,49 @@ +# Zephyr JOB definition for frdm-kw41z +device_type: '$device_type' +job_name: 'zephyr-upstream $test_name' + +timeouts: + job: + minutes: 30 + action: + minutes: 3 + actions: + wait-usb-device: + seconds: 40 + +priority: medium +visibility: public + +actions: +- deploy: + timeout: + minutes: 3 + to: tmpfs + images: + zephyr: + url: '$test_url' + +- boot: + method: pyocd + timeout: + minutes: 10 + +- test: + timeout: + minutes: 10 + monitors: + - name: '$test_name' + start: (tc_start\(\)|starting .*test|BOOTING ZEPHYR OS) + end: PROJECT EXECUTION + pattern: (?P<result>(PASS|FAIL))\s-\s(?P<test_case_id>\w+)\. + fixupdict: + PASS: pass + FAIL: fail + +metadata: + build-url: $build_url + build-log: $build_url/consoleText + zephyr-gcc-variant: $gcc_variant + platform: $board_name + git-url: https://git.linaro.org/zephyrproject-org/zephyr.git + git-commit: $git_commit diff --git a/zephyr-tutorial/lava-job-definitions/qemu/template.yaml b/zephyr-tutorial/lava-job-definitions/qemu/template.yaml new file mode 100644 index 00000000..38a3d330 --- /dev/null +++ b/zephyr-tutorial/lava-job-definitions/qemu/template.yaml @@ -0,0 +1,55 @@ +# Zephyr JOB definition for QEMU +device_type: '$device_type' +job_name: 'zephyr-upstream $test_name' + +timeouts: + job: + minutes: 30 + action: + minutes: 2 +priority: medium +visibility: public + +context: + arch: arm + cpu: cortex-m3 + machine: lm3s6965evb + model: 'model=stellaris' + serial: '-serial mon:stdio' + vga: '-vga none' + +actions: +- deploy: + timeout: + minutes: 3 + to: tmpfs + images: + zephyr: + image_arg: '-kernel {zephyr}' + url: '$test_url' + +- boot: + method: qemu + timeout: + minutes: 2 + +- test: + timeout: + minutes: 10 + monitors: + - name: '$test_name' + start: (tc_start\(\)|starting .*test|BOOTING ZEPHYR OS) + end: PROJECT EXECUTION + pattern: (?P<result>(PASS|FAIL))\s-\s(?P<test_case_id>\w+)\. + fixupdict: + PASS: pass + FAIL: fail + +metadata: + build-url: $build_url + build-log: $build_url/consoleText + zephyr-gcc-variant: $gcc_variant + platform: $board_name + git-url: https://git.linaro.org/zephyrproject-org/zephyr.git + git-commit: $git_commit + diff --git a/zephyr-tutorial/submit_to_lava_lite.py b/zephyr-tutorial/submit_to_lava_lite.py new file mode 100644 index 00000000..09fcdcdb --- /dev/null +++ b/zephyr-tutorial/submit_to_lava_lite.py @@ -0,0 +1,78 @@ +#!/usr/lib/python + +import argparse +import os +from string import Template +import sys +import xmlrpclib + +# Command line args +# Device type +# Board name (platform) +# Username +# Token +# LAVA server (incl /RPC2) +# Build URL +# Branch name + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--device-type", + help="Device type in LAVA", + dest="device_type", + required=True) + parser.add_argument("--board-name", + help="Zephyr platform name", + dest="board_name", + required=True) + parser.add_argument("--lava-user", + help="LAVA user", + dest="lava_user", + default=os.environ.get('LAVA_USER')) + parser.add_argument("--lava-token", + help="LAVA token", + dest="lava_token", + default=os.environ.get('LAVA_TOKEN')) + parser.add_argument("--lava-server", + help="LAVA server URL", + dest="lava_server", + required=True) + parser.add_argument("--branch-name", + help="branch name", + dest="branch_name", + required=True) + parser.add_argument("--build-url", + help="Jenkins build url", + dest="build_url", + required=True) + + args = parser.parse_args() + +# server = xmlrpclib.ServerProxy("http://%s:%s@%s/RPC2" % (username, token, hostname)) + +# TODO : Build the job file here from the template +# +# +# jobtext = jobfile.read() + +# TODO : Sumbit the job +# id = server.scheduler.submit_job(jobtext) +# print server.scheduler.job_status(id) + +# try: +# results = server.scheduler.submit_job(jobtext) +# except xmlrpclib.ProtocolError as err: +# print("LAVA submission failed") +# print("Error code: %d" % err.errcode) +# print("Error message: %s" % err.errmsg) + +# TODO : Poll server.scheduler.job_status(id) with a timeout for completion +# +# + + print("** submit_to_lava_lite.py") + + +if __name__ == "__main__": + main() + |