mirror of
https://xff.cz/git/u-boot/
synced 2025-08-31 08:12:06 +02:00
This is not needed in the test.py part of the config, now since we use the same name as the pytests. Drop BUILDMAN, retaining it only for the 'build' parts of the config, i.e. where we build multiple boards and don't run any tests. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com>
360 lines
9.8 KiB
YAML
360 lines
9.8 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-20200311-10Apr2020
|
|
|
|
# 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`
|
|
- 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
|
|
- cp /opt/grub/grubriscv64.efi ~/grub_riscv64.efi
|
|
- cp /opt/grub/grubriscv32.efi ~/grub_riscv32.efi
|
|
- cp /opt/grub/grubaa64.efi ~/grub_arm64.efi
|
|
- cp /opt/grub/grubarm.efi ~/grub_arm.efi
|
|
- if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
|
|
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv32-bin.tar.xz | tar -C /tmp -xJ;
|
|
export OPENSBI=/tmp/opensbi-0.6-rv32-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
|
|
fi
|
|
- if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]]; then
|
|
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv64-bin.tar.xz | tar -C /tmp -xJ;
|
|
export OPENSBI=/tmp/opensbi-0.6-rv64-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
|
|
fi
|
|
|
|
after_script:
|
|
- rm -rf /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 [[ "${TEST_PY_BD}" != "" ]]; then
|
|
ret=0;
|
|
tools/buildman/buildman -o /tmp -P -E --board ${TEST_PY_BD} ${OVERRIDE}
|
|
|| ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
tools/buildman/buildman -o /tmp -sdeP --board ${TEST_PY_BD};
|
|
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.
|
|
- virtualenv -p /usr/bin/python3 /tmp/venv
|
|
- . /tmp/venv/bin/activate
|
|
- pip install -r test/py/requirements.txt
|
|
- export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD};
|
|
export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH};
|
|
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 -p /usr/bin/python3 /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
|
|
|
|
# build HTML documentation
|
|
htmldocs:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- make htmldocs
|
|
|
|
# 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, Kconfig 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 -p /usr/bin/python3 /tmp/venv;
|
|
. /tmp/venv/bin/activate;
|
|
pip install pyelftools pytest;
|
|
export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl;
|
|
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
|
|
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
|
|
./tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w sandbox_spl;
|
|
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test;
|
|
./tools/buildman/buildman -t;
|
|
./tools/dtoc/dtoc -t;
|
|
./tools/patman/patman --test;
|
|
make testconfig
|
|
|
|
# Test sandbox with test.py
|
|
sandbox test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "sandbox"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox with clang test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "sandbox"
|
|
OVERRIDE: "-O clang-7"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_spl test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "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_and_testpy_dfn
|
|
|
|
sandbox_flattree test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "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_and_testpy_dfn
|
|
|
|
vexpress_ca9x4 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "vexpress_ca9x4"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *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_and_testpy_dfn
|
|
|
|
qemu_arm test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm64 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mips test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mips"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mipsel test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mipsel"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mips64 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mips64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mips64el test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mips64el"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-ppce500 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-ppce500"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv32 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv32"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv64 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv32_spl test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv32_spl"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv64_spl test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv64_spl"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-x86 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-x86"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *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_and_testpy_dfn
|
|
|
|
xilinx_zynq_virt test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "xilinx_zynq_virt"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *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_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_and_testpy_dfn
|