1# The CI jobs defined here require GitLab runners installed and
2# registered on machines that match their operating system names,
3# versions and architectures.  This is in contrast to the other CI
4# jobs that are intended to run on GitLab's "shared" runners.
5
6# Different than the default approach on "shared" runners, based on
7# containers, the custom runners have no such *requirement*, as those
8# jobs should be capable of running on operating systems with no
9# compatible container implementation, or no support from
10# gitlab-runner.  To avoid problems that gitlab-runner can cause while
11# reusing the GIT repository, let's enable the clone strategy, which
12# guarantees a fresh repository on each job run.
13variables:
14  GIT_STRATEGY: clone
15
16# All ubuntu-18.04 jobs should run successfully in an environment
17# setup by the scripts/ci/setup/build-environment.yml task
18# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
19ubuntu-18.04-s390x-all-linux-static:
20 allow_failure: true
21 needs: []
22 stage: build
23 tags:
24 - ubuntu_18.04
25 - s390x
26 rules:
27 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
28 script:
29 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
30 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
31 - mkdir build
32 - cd build
33 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
34 - make --output-sync -j`nproc`
35 - make --output-sync -j`nproc` check V=1
36 - make --output-sync -j`nproc` check-tcg V=1
37
38ubuntu-18.04-s390x-all:
39 allow_failure: true
40 needs: []
41 stage: build
42 tags:
43 - ubuntu_18.04
44 - s390x
45 rules:
46 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
47 script:
48 - mkdir build
49 - cd build
50 - ../configure --disable-libssh
51 - make --output-sync -j`nproc`
52 - make --output-sync -j`nproc` check V=1
53
54ubuntu-18.04-s390x-alldbg:
55 allow_failure: true
56 needs: []
57 stage: build
58 tags:
59 - ubuntu_18.04
60 - s390x
61 rules:
62 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
63 script:
64 - mkdir build
65 - cd build
66 - ../configure --enable-debug --disable-libssh
67 - make clean
68 - make --output-sync -j`nproc`
69 - make --output-sync -j`nproc` check V=1
70
71ubuntu-18.04-s390x-clang:
72 allow_failure: true
73 needs: []
74 stage: build
75 tags:
76 - ubuntu_18.04
77 - s390x
78 rules:
79 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
80   when: manual
81 script:
82 - mkdir build
83 - cd build
84 - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
85 - make --output-sync -j`nproc`
86 - make --output-sync -j`nproc` check V=1
87
88ubuntu-18.04-s390x-tci:
89 allow_failure: true
90 needs: []
91 stage: build
92 tags:
93 - ubuntu_18.04
94 - s390x
95 rules:
96 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
97 script:
98 - mkdir build
99 - cd build
100 - ../configure --disable-libssh --enable-tcg-interpreter
101 - make --output-sync -j`nproc`
102
103ubuntu-18.04-s390x-notcg:
104 allow_failure: true
105 needs: []
106 stage: build
107 tags:
108 - ubuntu_18.04
109 - s390x
110 rules:
111 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
112   when: manual
113 script:
114 - mkdir build
115 - cd build
116 - ../configure --disable-libssh --disable-tcg
117 - make --output-sync -j`nproc`
118 - make --output-sync -j`nproc` check V=1
119
120# All ubuntu-20.04 jobs should run successfully in an environment
121# setup by the scripts/ci/setup/qemu/build-environment.yml task
122# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
123ubuntu-20.04-aarch64-all-linux-static:
124 allow_failure: true
125 needs: []
126 stage: build
127 tags:
128 - ubuntu_20.04
129 - aarch64
130 rules:
131 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
132 script:
133 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
134 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
135 - mkdir build
136 - cd build
137 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
138 - make --output-sync -j`nproc`
139 - make --output-sync -j`nproc` check V=1
140 - make --output-sync -j`nproc` check-tcg V=1
141
142ubuntu-20.04-aarch64-all:
143 allow_failure: true
144 needs: []
145 stage: build
146 tags:
147 - ubuntu_20.04
148 - aarch64
149 rules:
150 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
151 script:
152 - mkdir build
153 - cd build
154 - ../configure --disable-libssh
155 - make --output-sync -j`nproc`
156 - make --output-sync -j`nproc` check V=1
157
158ubuntu-20.04-aarch64-alldbg:
159 allow_failure: true
160 needs: []
161 stage: build
162 tags:
163 - ubuntu_20.04
164 - aarch64
165 rules:
166 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
167 script:
168 - mkdir build
169 - cd build
170 - ../configure --enable-debug --disable-libssh
171 - make clean
172 - make --output-sync -j`nproc`
173 - make --output-sync -j`nproc` check V=1
174
175ubuntu-20.04-aarch64-clang:
176 allow_failure: true
177 needs: []
178 stage: build
179 tags:
180 - ubuntu_20.04
181 - aarch64
182 rules:
183 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
184   when: manual
185 script:
186 - mkdir build
187 - cd build
188 - ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
189 - make --output-sync -j`nproc`
190 - make --output-sync -j`nproc` check V=1
191
192ubuntu-20.04-aarch64-tci:
193 allow_failure: true
194 needs: []
195 stage: build
196 tags:
197 - ubuntu_20.04
198 - aarch64
199 rules:
200 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
201 script:
202 - mkdir build
203 - cd build
204 - ../configure --disable-libssh --enable-tcg-interpreter
205 - make --output-sync -j`nproc`
206
207ubuntu-20.04-aarch64-notcg:
208 allow_failure: true
209 needs: []
210 stage: build
211 tags:
212 - ubuntu_20.04
213 - aarch64
214 rules:
215 - if: '$CI_COMMIT_BRANCH =~ /^staging/'
216   when: manual
217 script:
218 - mkdir build
219 - cd build
220 - ../configure --disable-libssh --disable-tcg
221 - make --output-sync -j`nproc`
222 - make --output-sync -j`nproc` check V=1
223