mirror of
https://github.com/xemu-project/xemu.git
synced 2024-12-19 17:58:29 +00:00
f56bf4caf7
Due to a design problem and misunderstanding between the Avocado framework and QEMU, Avocado is fetching many asset artifacts it shouldn't be fetching, exhausting the jobs CI timeout. Since Avocado artifacts are cached, this is not an issue with old forks, which already have populated the cache and do not need to download new artifacts to run the tests. However this is very confusing to new contributors who start to fork the project and keep having failing CI pipelines. As a temporary kludge, add the QEMU_CI_AVOCADO_TESTING variable to allow old forks to keep running the Avocado tests, while still allowing new forks to use the mainstream set of CI tests. Keep the tests enabled by default on the mainstream namespace which is old enough to have a populated cache, hoping we will keep this cache long enough until the Avocado/QEMU design issue is fixed. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20210525082556.4011380-9-f4bug@amsat.org>
82 lines
2.7 KiB
YAML
82 lines
2.7 KiB
YAML
.native_build_job_template:
|
|
stage: build
|
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
|
before_script:
|
|
- JOBS=$(expr $(nproc) + 1)
|
|
script:
|
|
- if test -n "$LD_JOBS";
|
|
then
|
|
scripts/git-submodule.sh update meson ;
|
|
fi
|
|
- mkdir build
|
|
- cd build
|
|
- if test -n "$TARGETS";
|
|
then
|
|
../configure --enable-werror --disable-docs ${LD_JOBS:+--meson=git} $CONFIGURE_ARGS --target-list="$TARGETS" ;
|
|
else
|
|
../configure --enable-werror --disable-docs ${LD_JOBS:+--meson=git} $CONFIGURE_ARGS ;
|
|
fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
|
|
- if test -n "$LD_JOBS";
|
|
then
|
|
../meson/meson.py configure . -Dbackend_max_links="$LD_JOBS" ;
|
|
fi || exit 1;
|
|
- make -j"$JOBS"
|
|
- if test -n "$MAKE_CHECK_ARGS";
|
|
then
|
|
make -j"$JOBS" $MAKE_CHECK_ARGS ;
|
|
fi
|
|
|
|
.native_test_job_template:
|
|
stage: test
|
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
|
script:
|
|
- scripts/git-submodule.sh update
|
|
$(sed -n '/GIT_SUBMODULES=/ s/.*=// p' build/config-host.mak)
|
|
- cd build
|
|
- find . -type f -exec touch {} +
|
|
# Avoid recompiling by hiding ninja with NINJA=":"
|
|
- make NINJA=":" $MAKE_CHECK_ARGS
|
|
|
|
.acceptance_test_job_template:
|
|
extends: .native_test_job_template
|
|
cache:
|
|
key: "${CI_JOB_NAME}-cache"
|
|
paths:
|
|
- ${CI_PROJECT_DIR}/avocado-cache
|
|
policy: pull-push
|
|
artifacts:
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
|
when: on_failure
|
|
expire_in: 7 days
|
|
paths:
|
|
- build/tests/results/latest/results.xml
|
|
- build/tests/results/latest/test-results
|
|
reports:
|
|
junit: build/tests/results/latest/results.xml
|
|
before_script:
|
|
- mkdir -p ~/.config/avocado
|
|
- echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
|
|
- echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
|
|
>> ~/.config/avocado/avocado.conf
|
|
- echo -e '[job.output.testlogs]\nstatuses = ["FAIL", "INTERRUPT"]'
|
|
>> ~/.config/avocado/avocado.conf
|
|
- if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
|
|
du -chs ${CI_PROJECT_DIR}/avocado-cache ;
|
|
fi
|
|
- export AVOCADO_ALLOW_UNTRUSTED_CODE=1
|
|
after_script:
|
|
- cd build
|
|
- du -chs ${CI_PROJECT_DIR}/avocado-cache
|
|
rules:
|
|
# Only run these jobs if running on the mainstream namespace,
|
|
# or if the user set the QEMU_CI_AVOCADO_TESTING variable (either
|
|
# in its namespace setting or via git-push option, see documentation
|
|
# in /.gitlab-ci.yml of this repository).
|
|
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
|
when: always
|
|
- if: '$QEMU_CI_AVOCADO_TESTING'
|
|
when: always
|
|
# Otherwise, set to manual (the jobs are created but not run).
|
|
- when: manual
|
|
allow_failure: true
|