This commit improves our .gitlab-ci.yml logic to execute our runtime tests located in support/testing/. To do so, this commit: - Adds more Debian packages to be installed, namely the nose2 and pexpect packages needed by the runtime testing infrastructure, as well as the necessary Qemu emulators - The description of how to run the runtime tests. Each test is executed as a separate Gitlab CI job, so that the status of each test is easily visible in the Gitlab CI web interface. - The Makefile is improved to auto-generate .gitlab-ci.yml from .gitlab-ci.yml.in, like we're doing for defconfigs. Since the dependencies of .gitlab-ci.yml are no longer correct, we abandon them and instead make it a PHONY target. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> [Arnout: simplify .gitlab-ci.in a little, removing redundant stuff; make .gitlab-ci.yml a PHONY target] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
68 lines
2.2 KiB
YAML
68 lines
2.2 KiB
YAML
# Configuration for Gitlab-CI.
|
|
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
|
|
# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in.
|
|
# It needs to be regenerated every time a defconfig is added, using
|
|
# "make .gitlab-ci.yml".
|
|
|
|
image: debian:stable
|
|
|
|
before_script:
|
|
- dpkg --add-architecture i386
|
|
# The container has no package lists, so need to update first
|
|
- apt-get update -qq
|
|
- apt-get install -y -qq --no-install-recommends
|
|
build-essential locales bc ca-certificates file rsync gcc-multilib
|
|
git bzr cvs mercurial subversion libc6:i386 unzip wget cpio
|
|
python-nose2 python-pexpect qemu-system-arm qemu-system-x86
|
|
# To be able to generate a toolchain with locales, enable one UTF-8 locale
|
|
- sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen
|
|
- /usr/sbin/locale-gen
|
|
|
|
.defconfig_script: &defconfig_script
|
|
- echo 'Configure Buildroot'
|
|
- make ${CI_BUILD_NAME}
|
|
- echo 'Build buildroot'
|
|
- |
|
|
make > >(tee build.log |grep '>>>') 2>&1 || {
|
|
echo 'Failed build last output'
|
|
tail -200 build.log
|
|
exit 1
|
|
}
|
|
|
|
check-gitlab-ci.yml:
|
|
script:
|
|
- mv .gitlab-ci.yml .gitlab-ci.yml.orig
|
|
- make .gitlab-ci.yml
|
|
- diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
|
|
|
|
check-DEVELOPERS:
|
|
# get-developers should print just "No action specified"; if it prints
|
|
# anything else, it's a parse error.
|
|
# The initial ! is removed by YAML so we need to quote it.
|
|
script:
|
|
- "! utils/get-developers | grep -v 'No action specified'"
|
|
|
|
.defconfig: &defconfig
|
|
# Running the defconfigs for every push is too much, so limit to
|
|
# explicit triggers through the API.
|
|
only:
|
|
- triggers
|
|
- tags
|
|
script: *defconfig_script
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- build.log
|
|
- output/images/
|
|
- output/build/build-time.log
|
|
- output/build/packages-file-list.txt
|
|
|
|
.runtime_test: &runtime_test
|
|
script: ./support/testing/run-tests -o test-output/ -d test-dl/ ${CI_BUILD_NAME}
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- test-output/*.log
|