blob: 2023d6ef6e51e1f8f56c5bc15117edcff0018516 [file] [log] [blame]
- job:
name: tcwg-abe-test
project-type: matrix
defaults: global
properties:
- authorization:
anonymous:
- job-read
- job-extended-read
everyone-flat:
- job-build
- job-cancel
- build-discarder:
days-to-keep: 30
num-to-keep: 100
parameters:
- string:
name: GERRIT_PATCHSET_REVISION
default: refs/remotes/origin/master
description: 'Patched ABE revision'
- string:
name: test_list
default: 'cross_build native_build testsuite abe-tests abe-tests-checkout'
description: 'List of tests to perform'
- string:
name: scripts_branch
default: master
description: 'Scripts branch to use'
- bool:
name: dryrun
default: false
description: 'Dry-run, do nothing, just print steps'
disabled: false
node: tcwg-coordinator
retry-count: 3
concurrent: true
display-name: 'TCWG BBB ABE Test'
child-workspace: ../tcwg-abe-test__$EXECUTOR_NUMBER
scm:
- git:
url: https://gitlab.com/Linaro/tcwg/abe.git
refspec: +refs/changes/*:refs/remotes/changes/*
branches:
- ${GERRIT_PATCHSET_REVISION}
skip-tag: true
shallow-clone: false
wipe-workspace: true
choosing-strategy: gerrit
triggers:
- gerrit:
server-name: 'review.linaro.org'
override-votes: true
gerrit-build-successful-verified-value: 1
gerrit-build-failed-verified-value: -1
gerrit-build-successful-codereview-value: 1
gerrit-build-failed-codereview-value: -1
readable-message: true
successful-message: 'Works for me'
failure-message: 'Well ... it worked on my machine'
trigger-for-unreviewed-patches: true
projects:
- project-compare-type: 'ANT'
project-pattern: 'toolchain/abe'
branches:
- branch-compare-type: 'ANT'
branch-pattern: 'master'
silent-start: true
axes:
- axis:
type: slave
name: label
values:
- tcwg-x86_64-build
- axis:
type: dynamic
name: test
values:
- test_list
execution-strategy:
sequential: false
wrappers:
- timeout:
timeout: 300
- timestamps
- ssh-agent-credentials:
# tcwg-buildslave user id
users:
- 'e0958a95-204f-4c14-a66c-5e2be6c5d50a'
- build-name:
name: '#${BUILD_NUMBER}-${GIT_REVISION,length=8}'
builders:
- shell: |
#!/bin/bash
set -ex
ARTIFACTS=${WORKSPACE}/artifacts
mkdir -p "${ARTIFACTS}"
# Create at least an (empty) artifact so that Jenkins does not complain
# FIXME: Create an artifact for each case below, and no empty.txt
echo > ${ARTIFACTS}/empty.txt
# Explicitly checkout the branch/revision, as gerrit choosing
# strategy doesn't pick up the right one when manually triggered.
git checkout -f ${GERRIT_PATCHSET_REVISION}
git clone -b $scripts_branch --depth 1 https://gitlab.com/Linaro/tcwg/jenkins-scripts
. ./jenkins-scripts/jenkins-helpers.sh
./jenkins-scripts/start-container-docker.sh --label $label --node $NODE_NAME --task build --prefix build_ --dryrun $dryrun > build-container.sh
. ./build-container.sh
BUILD_SHELL="build_container_exec bash"
$BUILD_SHELL -c "echo \"Build session is up; ulimit config:\"; ulimit -a"
# Remove container on exit
trap "build_container_cleanup" EXIT HUP INT QUIT TRAP KILL PIPE TERM
if $dryrun; then
DRYRUNCMD="echo DRYRUN:"
else
DRYRUNCMD=
fi
status=0
case "$test" in
cross_build)
tester_label=$(print_tester_label_for_target arm-linux-gnueabihf)
./jenkins-scripts/start-container-docker.sh --label $tester_label --task test --prefix test_ > test-container.sh
. ./test-container.sh
trap "build_container_cleanup; test_container_cleanup" EXIT HUP INT QUIT TRAP KILL PIPE TERM
${BUILD_SHELL} -x ${WORKSPACE}/jenkins-scripts/jenkins.sh --workspace ${WORKSPACE} --abedir ${WORKSPACE} --target arm-linux-gnueabihf --testcontainer ${test_container_host}:${test_container_port} --runtests --excludecheck gdb
status=$?
;;
native_build)
${BUILD_SHELL} -x ${WORKSPACE}/jenkins-scripts/jenkins.sh --workspace ${WORKSPACE} --abedir ${WORKSPACE} --target native --runtests --bootstrap --excludecheck gdb
status=$?
;;
testsuite)
${BUILD_SHELL} -c "set -ex; ./configure; make check"
status=$?
;;
abe-tests)
${BUILD_SHELL} -c "set -ex; git clone https://gitlab.com/Linaro/tcwg/abe-tests.git; cd abe-tests; ./test-manifest2.sh --abe-path `pwd` --ref-snapshots /home/tcwg-buildslave/snapshots-ref --quiet --display-summary" || status=$?
$DRYRUNCMD cp abe-tests/full-manifest-test/*.txt ${ARTIFACTS}
$DRYRUNCMD rm ${ARTIFACTS}/empty.txt
# full build logs are large, and not very useful, so we
# don't waste the disk space on them
$DRYRUNCMD rm -f ${ARTIFACTS}/test-mani-build[12].txt
;;
abe-tests-checkout)
${BUILD_SHELL} -c "set -ex; git clone https://gitlab.com/Linaro/tcwg/abe-tests.git; cd abe-tests; ./test-checkout.sh --clean-snapshots --abe-path `pwd` --ref-snapshots /home/tcwg-buildslave/snapshots-ref" || status=$?
$DRYRUNCMD cp abe-tests/checkout-test/workspace*/test_*.log ${ARTIFACTS}
$DRYRUNCMD rm artifacts/empty.txt
# the reports from here aren't usually needed, so are
# worth compressing
$DRYRUNCMD xz ${ARTIFACTS}/*
;;
esac
exit ${status}
publishers:
- workspace-cleanup:
include:
- "nothing"
dirmatch: true
- archive:
artifacts: 'artifacts/*'
latest-only: false