| .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 |
| |
| .common_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 |
| |
| .native_test_job_template: |
| extends: .common_test_job_template |
| artifacts: |
| name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" |
| expire_in: 7 days |
| paths: |
| - build/meson-logs/testlog.txt |
| reports: |
| junit: build/meson-logs/testlog.junit.xml |
| |
| .avocado_test_job_template: |
| extends: .common_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: on_success |
| - if: '$QEMU_CI_AVOCADO_TESTING' |
| when: on_success |
| # Otherwise, set to manual (the jobs are created but not run). |
| - when: manual |
| allow_failure: true |