28a5123417
In order to run all filesystem tests we need to have newer ext4 tools, move up to Ubuntu 18.04 'bionic' for our base. We need to change slightly how we invoke the provided grub-mkimage. This will also make future python3 work easier. Signed-off-by: Tom Rini <trini@konsulko.com>
337 lines
9.3 KiB
YAML
337 lines
9.3 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:bionic-20190912.1-03Oct2019
|
|
|
|
# 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
|
|
- pip install coverage
|
|
- grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
|
|
- grub-mkimage --prefix="" -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 -o /tmp -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
tools/buildman/buildman -o /tmp -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=/tmp/.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 platforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- ret=0;
|
|
./tools/buildman/buildman -o /tmp -P -E arm -x aarch64 || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -o /tmp -sdeP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
build all 64bit ARM platforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- virtualenv /tmp/venv
|
|
- . /tmp/venv/bin/activate
|
|
- pip install pyelftools
|
|
- ret=0;
|
|
./tools/buildman/buildman -o /tmp -P -E aarch64 || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -o /tmp -sdeP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
build all PowerPC platforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- ret=0;
|
|
./tools/buildman/buildman -o /tmp -P -E powerpc || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -o /tmp -sdeP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
build all other platforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- ret=0;
|
|
./tools/buildman/buildman -o /tmp -P -E -x arm,powerpc || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -o /tmp -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)
|
|
|
|
# Ensure env tools build
|
|
Build envtools:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- make tools-only_config envtools -j$(nproc)
|
|
|
|
Run binman, buildman, dtoc and patman testsuites:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- git config --global user.name "GitLab CI Runner";
|
|
git config --global user.email trini@konsulko.com;
|
|
export USER=gitlab;
|
|
virtualenv /tmp/venv;
|
|
. /tmp/venv/bin/activate;
|
|
pip install pyelftools;
|
|
export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/sandbox_spl;
|
|
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
|
|
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
|
|
./tools/buildman/buildman -o /tmp -P sandbox_spl;
|
|
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test;
|
|
./tools/buildman/buildman -t;
|
|
./tools/dtoc/dtoc -t;
|
|
./tools/patman/patman --test
|
|
|
|
# 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
|