.gitlab-ci.yml 6.4 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 15 16
# Common templates

# Default native build jobs that are always run
.native_build_default_job_template: &native_build_default_job_definition
  stage: native_build
17 18 19 20 21
  cache:
    paths:
      - ccache/
    key: "$CI_JOB_NAME"
  before_script:
22
    - *script_variables
23 24 25 26
    - mkdir -p ccache
    - export CC="ccache gcc"
    - export CCACHE_BASEDIR=${PWD}
    - export CCACHE_DIR=${PWD}/ccache
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 41

# 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-.*$/


42
# Default cross build jobs that are always run
43 44
.cross_build_default_job_template: &cross_build_default_job_definition
  stage: cross_build
45 46 47 48 49
  cache:
    paths:
      - ccache/
    key: "$CI_JOB_NAME"
  before_script:
50
    - *script_variables
51 52 53 54
    - mkdir -p ccache
    - export CC="ccache ${ABI}-gcc"
    - export CCACHE_BASEDIR=${PWD}
    - export CCACHE_DIR=${PWD}/ccache
55 56 57 58
  script:
    - mkdir build
    - cd build
    - ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1)
59
    - $MAKE
60

61 62 63 64 65 66 67 68
# 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-.*$/

69

70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 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 115 116 117 118
# 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-30:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-fedora-30:latest

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

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-1604:
  <<: *native_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-ubuntu-1604:latest

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


# Cross compiled build jobs

119
armv6l-debian-9:
120
  <<: *cross_build_extra_job_definition
121
  image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-armv6l:latest
122

123
mips64el-debian-9:
124
  <<: *cross_build_extra_job_definition
125
  image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips64el:latest
126

127
mips-debian-9:
128
  <<: *cross_build_extra_job_definition
129
  image: quay.io/libvirt/buildenv-libvirt-debian-9-cross-mips:latest
130

131
aarch64-debian-10:
132
  <<: *cross_build_extra_job_definition
133
  image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-aarch64:latest
134

135
ppc64le-debian-10:
136
  <<: *cross_build_extra_job_definition
137
  image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-ppc64le:latest
138

139
s390x-debian-10:
140
  <<: *cross_build_default_job_definition
141
  image: quay.io/libvirt/buildenv-libvirt-debian-10-cross-s390x:latest
142

143
armv7l-debian-sid:
144
  <<: *cross_build_default_job_definition
145
  image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-armv7l:latest
146

147
i686-debian-sid:
148
  <<: *cross_build_extra_job_definition
149
  image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-i686:latest
150

151
mipsel-debian-sid:
152
  <<: *cross_build_extra_job_definition
153
  image: quay.io/libvirt/buildenv-libvirt-debian-sid-cross-mipsel:latest
154

155 156 157 158 159 160 161 162 163
mingw32-fedora-30:
  <<: *cross_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-fedora-30-cross-mingw32:latest

mingw64-fedora-30:
  <<: *cross_build_default_job_definition
  image: quay.io/libvirt/buildenv-libvirt-fedora-30-cross-mingw64:latest


164 165 166 167 168
# 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
169 170
  before_script:
    - *script_variables
171 172 173 174
  script:
    - mkdir build
    - cd build
    - ../autogen.sh --prefix=$(pwd)/../vroot || (cat config.log && exit 1)
175 176
    - $MAKE -C docs
    - $MAKE -C docs install
177 178 179 180 181 182 183 184 185 186
    - cd ..
    - mv vroot/share/doc/libvirt/html/ website
  image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
  artifacts:
    expose_as: 'Website'
    name: 'website'
    when: on_success
    expire_in: 30 days
    paths:
      - website
187 188


189 190
codestyle:
  stage: prebuild
191 192
  before_script:
    - *script_variables
193 194 195 196
  script:
    - mkdir build
    - cd build
    - ../autogen.sh || (cat config.log && exit 1)
197
    - $MAKE syntax-check
198 199 200
  image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest


201 202 203 204 205 206 207
# 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
208 209
  before_script:
    - *script_variables
210 211 212 213
  script:
    - mkdir build
    - cd build
    - ../autogen.sh || (cat config.log && exit 1)
214 215
    - $MAKE -C src generated-sources
    - $MAKE -C po libvirt.pot
216 217 218 219 220 221 222 223 224 225
    - cd ..
    - mv build/po/libvirt.pot libvirt.pot
  image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
  artifacts:
    expose_as: 'Potfile'
    name: 'potfile'
    when: on_success
    expire_in: 30 days
    paths:
      - libvirt.pot
226 227 228 229 230 231 232 233


# Check that all commits are signed-off for the DCO. Skip
# on master branch and -maint branches, since we only need
# to test developer's personal branches.
dco:
  stage: prebuild
  image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest
234 235
  before_script:
    - *script_variables
236 237 238 239 240 241
  script:
    - ./scripts/require-dco.py
  only:
    - branches
  except:
    - /^v.*-maint$/
242
    - master