NEWS: Fix misindented bullet point
[libvirt.git] / .gitlab-ci.yml
blobd9d8b1e3cdbecc9a6967facbfdc65f9c7466d710
1 variables:
2   GIT_DEPTH: 100
4 stages:
5   - containers
6   - builds
7   - integration_tests
8   - sanity_checks
9   - pages
11 .script_variables: &script_variables |
12   export CCACHE_BASEDIR="$(pwd)"
13   export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
14   export CCACHE_MAXSIZE="500M"
15   export PATH="$CCACHE_WRAPPERSDIR:$PATH"
16   export VIR_TEST_VERBOSE="1"
17   export VIR_TEST_DEBUG="1"
19 include:
20   - '/ci/gitlab.yml'
21   - '/ci/integration.yml'
23 .native_build_job:
24   extends: .gitlab_native_build_job
25   cache:
26     paths:
27       - ccache/
28     key: "$CI_JOB_NAME"
29   script:
30     - source ci/jobs.sh
31     - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip";
32       then
33         run_rpmbuild;
34       else
35         run_build;
36         run_test;
37       fi
38   after_script:
39     - test "$CI_JOB_STATUS" != "success" && exit 1;
40     - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip";
41       then
42         mv "$HOME"/rpmbuild/RPMS/x86_64/ libvirt-rpms/;
43       fi
45 .cross_build_job:
46   extends: .gitlab_cross_build_job
47   cache:
48     paths:
49       - ccache/
50     key: "$CI_JOB_NAME"
51   script:
52     - source ci/jobs.sh
53     - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip";
54       then
55         run_rpmbuild;
56       else
57         run_build;
58         if test "$CROSS" = "i686";
59         then
60           run_test;
61         fi;
62       fi
64 # This artifact published by this job is downloaded by libvirt.org to
65 # be deployed to the web root:
66 #    https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=website
67 website_job:
68   extends: .gitlab_native_build_job
69   needs:
70     - job: x86_64-almalinux-9-container
71       optional: true
72   script:
73     - source ci/jobs.sh
74     - run_website_build
75   after_script:
76     - test "$CI_JOB_STATUS" != "success" && exit 1;
77     - mv install/usr/share/doc/libvirt/html/ website
78   artifacts:
79     expose_as: 'Website'
80     name: 'website'
81     when: on_success
82     expire_in: 30 days
83     paths:
84       - website
85   variables:
86     NAME: almalinux-9
87     TARGET_BASE_IMAGE: docker.io/library/almalinux:9
89 # On push to master publish the website from 'website_job' via gitlab pages
90 pages:
91   stage: pages
92   script:
93     - mv website public
94     - cp .gitlab_pages_redirects public/_redirects
95   dependencies:
96     - website_job
97   rules:
98     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
99       when: always
100     - when: never
101   artifacts:
102     expose_as: 'pages'
103     name: 'pages'
104     paths:
105       - public
107 .codestyle_job:
108   stage: sanity_checks
109   needs:
110     - job: x86_64-opensuse-leap-15-container
111       optional: true
112   script:
113     - source ci/jobs.sh
114     - run_codestyle
115   variables:
116     NAME: opensuse-leap-15
117     TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/leap:15.5
119 # This artifact published by this job is downloaded to push to Weblate
120 # for translation usage:
121 #    https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=potfile
122 potfile:
123   image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME:latest
124   stage: builds
125   variables:
126     NAME: almalinux-9
127   before_script:
128     - cat /packages.txt
129   needs:
130     - job: x86_64-almalinux-9-container
131       optional: true
132   rules:
133     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
134       when: on_success
135     - when: never
136   before_script:
137     - *script_variables
138   script:
139     - source ci/jobs.sh
140     - run_potfile
141   after_script:
142     - test "$CI_JOB_STATUS" != "success" && exit 1;
143     - cp po/libvirt.pot libvirt.pot
144   artifacts:
145     expose_as: 'Potfile'
146     name: 'potfile'
147     when: on_success
148     expire_in: 30 days
149     paths:
150       - libvirt.pot
152 # Coverity job that is run only by schedules
153 coverity:
154   image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME:latest
155   stage: builds
156   needs:
157     - job: x86_64-almalinux-9-container
158       optional: true
159   before_script:
160     - cat /packages.txt
161   script:
162     - curl https://scan.coverity.com/download/cxx/linux64 --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN -o /tmp/cov-analysis-linux64.tgz
163     - tar xfz /tmp/cov-analysis-linux64.tgz
164     - meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1)
165     - cov-analysis-linux64-*/bin/cov-build --dir cov-int meson compile -C build
166     - tar cfz cov-int.tar.gz cov-int
167     - 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"
168   variables:
169     NAME: almalinux-9
170   rules:
171     - if: '$COVERITY_SCAN_PROJECT_NAME == null || $COVERITY_SCAN_TOKEN == null'
172       when: never
173     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH'
174       when: on_success
175     - when: never