variables: GIT_DEPTH: 100 stages: - containers - builds - integration_tests - sanity_checks .script_variables: &script_variables | export CCACHE_BASEDIR="$(pwd)" export CCACHE_DIR="$CCACHE_BASEDIR/ccache" export CCACHE_MAXSIZE="500M" export PATH="$CCACHE_WRAPPERSDIR:$PATH" export VIR_TEST_VERBOSE="1" export VIR_TEST_DEBUG="1" include: - '/ci/gitlab.yml' - '/ci/integration.yml' .native_build_job: cache: paths: - ccache/ key: "$CI_JOB_NAME" script: - source ci/jobs.sh - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip"; then run_rpmbuild; else run_build; run_test; fi after_script: - test "$CI_JOB_STATUS" != "success" && exit 1; - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip"; then mv "$HOME"/rpmbuild/RPMS/x86_64/ libvirt-rpms/; fi .native_build_job_prebuilt_env: extends: - .native_build_job - .gitlab_native_build_job_prebuilt_env .native_build_job_local_env: extends: - .native_build_job - .gitlab_native_build_job_local_env .cross_build_job: cache: paths: - ccache/ key: "$CI_JOB_NAME" script: - *script_variables - meson setup build --werror $MESON_OPTS || (cat build/meson-logs/meson-log.txt && exit 1) - meson compile -C build - if test "$CROSS" = "i686" ; then meson test -C build --no-suite syntax-check --print-errorlogs ; fi .cross_build_job_prebuilt_env: extends: - .cross_build_job - .gitlab_cross_build_job_prebuilt_env .cross_build_job_local_env: extends: - .cross_build_job - .gitlab_cross_build_job_local_env # This artifact published by this job is downloaded by libvirt.org to # be deployed to the web root: # https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=website .website_job: script: - *script_variables - meson setup build --werror -Dsystem=true || (cat build/meson-logs/meson-log.txt && exit 1) - DESTDIR=$(pwd)/install meson compile -C build install-web after_script: - test "$CI_JOB_STATUS" != "success" && exit 1; - mv install/usr/share/doc/libvirt/html/ website artifacts: expose_as: 'Website' name: 'website' when: on_success expire_in: 30 days paths: - website website_prebuilt_env: extends: - .website_job - .gitlab_native_build_job_prebuilt_env needs: - job: x86_64-almalinux-8-container optional: true variables: NAME: almalinux-8 website_local_env: extends: - .website_job - .gitlab_native_build_job_local_env variables: IMAGE: docker.io/library/almalinux:8 NAME: almalinux-8 .codestyle_job: stage: sanity_checks script: - *script_variables - meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1) - meson compile -C build libvirt-pot-dep - meson test -C build --suite syntax-check --no-rebuild --print-errorlogs codestyle_prebuilt_env: extends: - .codestyle_job - .gitlab_native_build_job_prebuilt_env needs: - job: x86_64-opensuse-leap-15-container optional: true variables: NAME: opensuse-leap-15 codestyle_local_env: extends: - .codestyle_job - .gitlab_native_build_job_local_env variables: IMAGE: registry.opensuse.org/opensuse/leap:15.4 NAME: opensuse-leap-15 # This artifact published by this job is downloaded to push to Weblate # for translation usage: # https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=potfile potfile: image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME:latest stage: builds variables: NAME: almalinux-8 before_script: - cat /packages.txt needs: - job: x86_64-almalinux-8-container optional: true rules: - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: on_success - when: never before_script: - *script_variables script: - meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1) - meson compile -C build libvirt-pot-dep - meson compile -C build libvirt-pot after_script: - test "$CI_JOB_STATUS" != "success" && exit 1; - cp po/libvirt.pot libvirt.pot artifacts: expose_as: 'Potfile' name: 'potfile' when: on_success expire_in: 30 days paths: - libvirt.pot # Coverity job that is run only by schedules coverity: image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME:latest stage: builds needs: - job: x86_64-almalinux-8-container optional: true before_script: - cat /packages.txt script: - curl https://scan.coverity.com/download/linux64 --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN -o /tmp/cov-analysis-linux64.tgz - tar xfz /tmp/cov-analysis-linux64.tgz - meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1) - cov-analysis-linux64-*/bin/cov-build --dir cov-int meson compile -C build - tar cfz cov-int.tar.gz cov-int - curl https://scan.coverity.com/builds?project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN --form email=$GITLAB_USER_EMAIL --form file=@cov-int.tar.gz --form version="$(git describe --tags)" --form description="$(git describe --tags) / $CI_COMMIT_TITLE / $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID" variables: NAME: almalinux-8 rules: - if: '$COVERITY_SCAN_PROJECT_NAME == null || $COVERITY_SCAN_TOKEN == null' when: never - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' when: on_success - when: never