summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 4cd462b69db9ee04f3509612a342b24231de8d61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:

# FDO_DISTRIBUTION_TAG is the tag of the docker image used for the build
# jobs. If the image doesn't exist yet, the docker-image stage generates it
# or copies it from upstream (this is all handled by the templates).
#
# In order to generate a new image, one should generally change the tag.
# While removing the image from the registry would also work, that's not
# recommended except for ephemeral images during development.
#
variables:
  FDO_DISTRIBUTION_VERSION: bookworm-slim
  FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/debian-install.sh'
  FDO_DISTRIBUTION_PACKAGES: 'ca-certificates'
  FDO_DISTRIBUTION_TAG: "2024-02-23.2"
  FDO_UPSTREAM_REPO: xorg/driver/xf86-video-ati

#
# This CI uses the freedesktop.org ci-templates.
# Please see the ci-templates documentation for details:
# https://freedesktop.pages.freedesktop.org/ci-templates/

.templates_sha: &template_sha 9568e38927f9e9c48d4f586f84a071c3a4bdcd39 # see https://docs.gitlab.com/ee/ci/yaml/#includefile

include:
  - project: 'freedesktop/ci-templates'
    ref: *template_sha
    file: '/templates/debian.yml'
  - project: 'freedesktop/ci-templates'
    ref: *template_sha
    file: '/templates/ci-fairy.yml'
  - template: Security/SAST.gitlab-ci.yml


stages:
  - docker-image
  - build
  - test

#
# Verify that commit messages are as expected
#
check-commits:
  extends:
    - .fdo.ci-fairy
  stage: test
  script:
    - ci-fairy check-commits --junit-xml=results.xml
  except:
    - master@$FDO_UPSTREAM_REPO
  variables:
    GIT_DEPTH: 100
  artifacts:
    reports:
      junit: results.xml
  allow_failure: true

#
# Verify that the merge request has the allow-collaboration checkbox ticked
#
check-merge-request:
  extends:
    - .fdo.ci-fairy
  stage: test
  script:
    - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
  artifacts:
    when: on_failure
    reports:
      junit: results.xml
  allow_failure: true


#
# Build a container with the given tag and the packages pre-installed.
# This only happens if/when the tag changes, otherwise the existing image is
# re-used.
#
container-build:
  extends:
    - .fdo.container-build@debian
  stage: docker-image
  variables:
    GIT_STRATEGY: none


# The default build instructions
.default_build:
  extends:
    - .fdo.distribution-image@debian
  stage: build
  script:
  - ./autogen.sh
  - make -j${FDO_CI_CONCURRENT:-4} check V=1
  variables:
    CFLAGS: "-pipe -g -O2 -Werror"
    ACLOCAL_PATH: /usr/local/xserver-$XSERVER_VERSION/share/aclocal
    PKG_CONFIG_PATH: /usr/local/xserver-$XSERVER_VERSION/lib/pkgconfig

build-distcheck:
  extends:
    - .default_build
  script:
  - ./autogen.sh
  - make -j${FDO_CI_CONCURRENT:-4} check V=1
  - make install V=1
  - make -j${FDO_CI_CONCURRENT:-4} distcheck
  variables:
    XSERVER_VERSION: "21.1"

# excludes version already checked in build-distcheck
build-gcc:
  extends:
    - .default_build
  parallel:
    matrix:
      - XSERVER_VERSION: ["1.16", "1.17", "1.18", "1.19", "1.20"]

build-clang:
  extends:
    - .default_build
  parallel:
    matrix:
      - XSERVER_VERSION: ["1.18", "1.19", "1.20", "21.1"]
  variables:
    CC: clang

build-noglamor:
  extends:
    - .default_build
  script:
  - ./autogen.sh --disable-glamor
  - make -j${FDO_CI_CONCURRENT:-4} check V=1
  parallel:
    matrix:
      - XSERVER_VERSION: ["1.13", "1.14", "1.15"]