u-boot-brain/.gitlab-ci.yml
Tom Rini edbe0d5664 gitlab-ci: Add USER environment variable to buildman/patman tests
The way that some of the tests here are designed, they expect USER to be
set in the environment.  This is not the case in the docker images, so
set a reasonable value.

Signed-off-by: Tom Rini <trini@konsulko.com>
2019-08-12 15:19:18 -04:00

341 lines
9.2 KiB
YAML

# SPDX-License-Identifier: GPL-2.0+
# Grab our configured image. The source for this is found at:
# https://gitlab.denx.de/u-boot/gitlab-ci-runner
image: trini/u-boot-gitlab-ci-runner:xenial-20190720-02Aug2019
# We run some tests in different order, to catch some failures quicker.
stages:
- testsuites
- test.py
- world build
.buildman_and_testpy_template: &buildman_and_testpy_dfn
tags: [ 'all' ]
stage: test.py
before_script:
# Clone uboot-test-hooks
- git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks
- ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
- ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
- virtualenv /tmp/venv
- . /tmp/venv/bin/activate
- pip install pytest==2.8.7
- pip install python-subunit
- grub-mkimage -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
- grub-mkimage -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
- mkdir ~/grub2-arm
- ( cd ~/grub2-arm; wget -O - http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm | rpm2cpio | cpio -di )
- mkdir ~/grub2-arm64
- ( cd ~/grub2-arm64; wget -O - http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/repo/oss/suse/aarch64/grub2-arm64-efi-2.02~beta2-87.1.aarch64.rpm | rpm2cpio | cpio -di )
after_script:
- rm -rf ~/grub2* /tmp/uboot-test-hooks /tmp/venv
script:
# From buildman, exit code 129 means warnings only. If we've been asked to
# use clang only do one configuration.
- if [[ "${BUILDMAN}" != "" ]]; then
ret=0;
tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
tools/buildman/buildman -sdeP ${BUILDMAN};
exit $ret;
fi;
fi
# "not a_test_which_does_not_exist" is a dummy -k parameter which will
# never prevent any test from running. That way, we can always pass
# "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom
# value.
- export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD};
export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:/usr/bin:/bin;
export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
if [[ "${TEST_PY_BD}" != "" ]]; then
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
-k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}"
--build-dir "$UBOOT_TRAVIS_BUILD_DIR";
ret=$?;
if [[ $ret -ne 0 ]]; then
exit $ret;
fi;
fi;
build all 32bit ARM plaforms:
tags: [ 'all' ]
stage: world build
script:
- ret=0;
./tools/buildman/buildman -P -E arm -x aarch64 || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
./tools/buildman/buildman -sdeP;
exit $ret;
fi;
build all 64bit ARM plaforms:
tags: [ 'all' ]
stage: world build
script:
- virtualenv /tmp/venv
- . /tmp/venv/bin/activate
- pip install pyelftools
- ret=0;
./tools/buildman/buildman -P -E aarch64 || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
./tools/buildman/buildman -sdeP;
exit $ret;
fi;
build all PowerPC plaforms:
tags: [ 'all' ]
stage: world build
script:
- ret=0;
./tools/buildman/buildman -P -E powerpc || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
./tools/buildman/buildman -sdeP;
exit $ret;
fi;
build all other plaforms:
tags: [ 'all' ]
stage: world build
script:
- ret=0;
./tools/buildman/buildman -P -E -x arm,powerpc || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
./tools/buildman/buildman -sdeP;
exit $ret;
fi;
# QA jobs for code analytics
# static code analysis with cppcheck (we can add --enable=all later)
cppcheck:
tags: [ 'all' ]
stage: testsuites
script:
- cppcheck --force --quiet --inline-suppr .
# search for TODO within source tree
grep TODO/FIXME/HACK:
tags: [ 'all' ]
stage: testsuites
script:
- grep -r TODO .
- grep -r FIXME .
# search for HACK within source tree and ignore HACKKIT board
- grep -r HACK . | grep -v HACKKIT
# some statistics about the code base
sloccount:
tags: [ 'all' ]
stage: testsuites
script:
- sloccount .
# ensure all configs have MAINTAINERS entries
Check for configs without MAINTAINERS entry:
tags: [ 'all' ]
stage: testsuites
script:
- if [ `./tools/genboardscfg.py -f 2>&1 | wc -l` -ne 0 ]; then exit 1; fi
# Ensure host tools build
Build tools-only:
tags: [ 'all' ]
stage: testsuites
script:
- make tools-only_config tools-only -j$(nproc)
# Run various tool tests
Run patman testsuite:
tags: [ 'all' ]
stage: testsuites
script:
- git config --global user.name "GitLab CI Runner"
- git config --global user.email trini@konsulko.com
- export USER=gitlab
- ./tools/patman/patman --test
Run buildman testsuite:
tags: [ 'all' ]
stage: testsuites
script:
- export USER=gitlab
- ./tools/buildman/buildman -t
Run binman and dtoc testsuite:
tags: [ 'all' ]
stage: testsuites
script:
- virtualenv /tmp/venv
- . /tmp/venv/bin/activate
- pip install pyelftools
- export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/sandbox_spl;
./tools/buildman/buildman -P sandbox_spl &&
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test &&
./tools/dtoc/dtoc -t
# Test sandbox with test.py
sandbox test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "sandbox"
BUILDMAN: "^sandbox$"
<<: *buildman_and_testpy_dfn
sandbox_spl test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "sandbox_spl"
BUILDMAN: "^sandbox_spl$"
TEST_PY_TEST_SPEC: "test_ofplatdata"
<<: *buildman_and_testpy_dfn
evb-ast2500 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "evb-ast2500"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^evb-ast2500$"
<<: *buildman_and_testpy_dfn
sandbox_flattree test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "sandbox_flattree"
BUILDMAN: "^sandbox_flattree$"
<<: *buildman_and_testpy_dfn
vexpress_ca15_tc2 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "vexpress_ca15_tc2"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca15_tc2$"
<<: *buildman_and_testpy_dfn
vexpress_ca9x4 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "vexpress_ca9x4"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca9x4$"
<<: *buildman_and_testpy_dfn
integratorcp_cm926ejs test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "integratorcp_cm926ejs"
TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^integratorcp_cm926ejs$"
<<: *buildman_and_testpy_dfn
qemu_arm test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu_arm"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm$"
<<: *buildman_and_testpy_dfn
qemu_arm64 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu_arm64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm64$"
<<: *buildman_and_testpy_dfn
qemu_mips test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu_mips"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips$"
<<: *buildman_and_testpy_dfn
qemu_mipsel test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu_mipsel"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mipsel$"
<<: *buildman_and_testpy_dfn
qemu_mips64 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu_mips64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64$"
<<: *buildman_and_testpy_dfn
qemu_mips64el test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu_mips64el"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64el$"
<<: *buildman_and_testpy_dfn
qemu-ppce500 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu-ppce500"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-ppce500$"
<<: *buildman_and_testpy_dfn
qemu-riscv64 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu-riscv64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-riscv64$"
<<: *buildman_and_testpy_dfn
qemu-x86 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu-x86"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86$"
<<: *buildman_and_testpy_dfn
qemu-x86_64 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu-x86_64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86_64$"
<<: *buildman_and_testpy_dfn
zynq_zc702 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "zynq_zc702"
TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^zynq_zc702$"
<<: *buildman_and_testpy_dfn
xilinx_versal_virt test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "xilinx_versal_virt"
TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^xilinx_versal_virt$"
<<: *buildman_and_testpy_dfn
xtfpga test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "xtfpga"
TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^xtfpga$"
<<: *buildman_and_testpy_dfn