.gitlab-ci.yml 7.2 KB
Newer Older
1
variables:
2
  GIT_DEPTH: 100
3

4
stages:
5
  - prebuild
6
  - native_build
7 8
  - cross_build

9 10
.script_variables: &script_variables |
  export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)"
11 12 13 14
  export CCACHE_BASEDIR="$(pwd)"
  export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
  export CCACHE_MAXSIZE="500M"
  export PATH="$CCACHE_WRAPPERSDIR:$PATH"
15

16 17 18 19 20
# Common templates

# Default native build jobs that are always run
.native_build_default_job_template: &native_build_default_job_definition
  stage: native_build
21 22 23 24 25
  cache:
    paths:
      - ccache/
    key: "$CI_JOB_NAME"
  before_script:
26
    - *script_variables
27 28 29 30
  script:
    - mkdir build
    - cd build
    - ../autogen.sh || (cat config.log && exit 1)
31
    - $MAKE distcheck
32 33 34 35 36 37 38 39 40

# Extra native build jobs that are only run post-merge, or
# when code is pushed to a branch with "ci-full-" name prefix
.native_build_extra_job_template: &native_build_extra_job_definition
  <<: *native_build_default_job_definition
  only:
    - master
    - /^ci-full-.*$/

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
# Jobs that we delegate to Cirrus CI because they require an operating
# system other than Linux. These jobs will only run if the required
# setup has been performed on the GitLab account (see ci/README.rst).
.cirrus_build_default_job_template: &cirrus_build_default_job_definition
  stage: native_build
  image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
  script:
    - cirrus-run ci/cirrus/$NAME.yml.j2
  only:
    variables:
      - $CIRRUS_GITHUB_REPO
      - $CIRRUS_API_TOKEN

.cirrus_build_extra_job_template: &cirrus_build_extra_job_definition
  <<: *cirrus_build_default_job_definition
  only:
    variables:
      - $CIRRUS_GITHUB_REPO
      - $CIRRUS_API_TOKEN
    refs:
      - master
      - /^ci-full-.*$/

64

65
# Default cross build jobs that are always run
66 67
.cross_build_default_job_template: &cross_build_default_job_definition
  stage: cross_build
68 69 70 71 72
  cache:
    paths:
      - ccache/
    key: "$CI_JOB_NAME"
  before_script:
73
    - *script_variables
74 75 76 77
  script:
    - mkdir build
    - cd build
    - ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1)
78
    - $MAKE
79

80 81 82 83 84 85 86 87
# Extra cross build jobs that are only run post-merge, or
# when code is pushed to a branch with "ci-full-" name prefix
.cross_build_extra_job_template: &cross_build_extra_job_definition
  <<: *cross_build_default_job_definition
  only:
    - master
    - /^ci-full-.*$/

88

89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
# Native architecture build + test jobs

x64-debian-9:
  <<: *native_build_extra_job_definition
  image: quay.io/libvirt/buildenv-libvirt-debian-9:latest

x64-debian-10:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-debian-10:latest

x64-debian-sid:
  <<: *native_build_extra_job_definition
  image: quay.io/libvirt/buildenv-libvirt-debian-sid:latest

x64-centos-7:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-centos-7:latest

x64-centos-8:
  <<: *native_build_extra_job_definition
  image: quay.io/libvirt/buildenv-libvirt-centos-8:latest

x64-fedora-31:
  <<: *native_build_extra_job_definition
  image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest

115 116 117 118
x64-fedora-32:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-fedora-32:latest

119 120 121 122 123 124 125 126 127 128 129 130
x64-fedora-rawhide:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-fedora-rawhide:latest

x64-opensuse-151:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-opensuse-151:latest

x64-ubuntu-1804:
  <<: *native_build_extra_job_definition
  image: quay.io/libvirt/buildenv-libvirt-ubuntu-1804:latest

131 132 133 134
x64-ubuntu-2004:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-ubuntu-2004:latest

135 136 137 138 139 140 141 142 143 144
x64-freebsd-12-build:
  <<: *cirrus_build_default_job_definition
  variables:
    NAME: freebsd-12

x64-macos-1015-build:
  <<: *cirrus_build_default_job_definition
  variables:
    NAME: macos-1015

145 146 147

# Cross compiled build jobs

148
armv6l-debian-9:
149
  <<: *cross_build_extra_job_definition
150
  image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-armv6l:latest
151

152
mips64el-debian-9:
153
  <<: *cross_build_extra_job_definition
154
  image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips64el:latest
155

156
mips-debian-9:
157
  <<: *cross_build_extra_job_definition
158
  image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips:latest
159

160
aarch64-debian-10:
161
  <<: *cross_build_extra_job_definition
162
  image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-aarch64:latest
163

164
ppc64le-debian-10:
165
  <<: *cross_build_extra_job_definition
166
  image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-ppc64le:latest
167

168
s390x-debian-10:
169
  <<: *cross_build_default_job_definition
170
  image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-s390x:latest
171

172
armv7l-debian-sid:
173
  <<: *cross_build_default_job_definition
174
  image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-armv7l:latest
175

176
i686-debian-sid:
177
  <<: *cross_build_extra_job_definition
178
  image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-i686:latest
179

180
mipsel-debian-sid:
181
  <<: *cross_build_extra_job_definition
182
  image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-mipsel:latest
183

184
mingw32-fedora-rawhide:
185
  <<: *cross_build_default_job_definition
186
  image: quay.io/libvirt/buildenv-libvirt-fedora-rawhide-cross-mingw32:latest
187

188
mingw64-fedora-rawhide:
189
  <<: *cross_build_default_job_definition
190
  image: quay.io/libvirt/buildenv-libvirt-fedora-rawhide-cross-mingw64:latest
191 192


193 194 195 196 197
# 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:
  stage: prebuild
198 199
  before_script:
    - *script_variables
200 201 202 203
  script:
    - mkdir build
    - cd build
    - ../autogen.sh --prefix=$(pwd)/../vroot || (cat config.log && exit 1)
204 205
    - $MAKE -C docs
    - $MAKE -C docs install
206 207
    - cd ..
    - mv vroot/share/doc/libvirt/html/ website
208
  image: quay.io/libvirt/buildenv-libvirt-centos-8:latest
209 210 211 212 213 214 215
  artifacts:
    expose_as: 'Website'
    name: 'website'
    when: on_success
    expire_in: 30 days
    paths:
      - website
216 217


218 219
codestyle:
  stage: prebuild
220 221
  before_script:
    - *script_variables
222 223 224 225
  script:
    - mkdir build
    - cd build
    - ../autogen.sh || (cat config.log && exit 1)
226
    - $MAKE syntax-check
227
  image: quay.io/libvirt/buildenv-libvirt-centos-8:latest
228 229


230 231 232 233 234 235 236
# 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:
  stage: prebuild
  only:
    - master
237 238
  before_script:
    - *script_variables
239 240 241 242
  script:
    - mkdir build
    - cd build
    - ../autogen.sh || (cat config.log && exit 1)
243 244
    - $MAKE -C src generated-sources
    - $MAKE -C po libvirt.pot
245
    - cd ..
246
    - cp po/libvirt.pot libvirt.pot
247
  image: quay.io/libvirt/buildenv-libvirt-centos-8:latest
248 249 250 251 252 253 254
  artifacts:
    expose_as: 'Potfile'
    name: 'potfile'
    when: on_success
    expire_in: 30 days
    paths:
      - libvirt.pot
255 256


257 258 259 260 261
# Check that all commits are signed-off for the DCO.
# Skip on "libvirt" namespace, since we only need to run
# this test on developer's personal forks from which
# merge requests are submitted
check-dco:
262
  stage: prebuild
263
  image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master
264
  script:
265
    - /check-dco
266
  except:
267 268
    variables:
      - $CI_PROJECT_NAMESPACE == 'libvirt'