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_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
28 - if: "$S390X_RUNNER_AVAILABLE"
29 script:
30 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
31 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
32 - mkdir build
33 - cd build
34 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
35 - make --output-sync -j`nproc`
36 - make --output-sync -j`nproc` check V=1
37 - make --output-sync -j`nproc` check-tcg V=1
38
39ubuntu-18.04-s390x-all:
40 allow_failure: true
41 needs: []
42 stage: build
43 tags:
44 - ubuntu_18.04
45 - s390x
46 rules:
47 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
48 - if: "$S390X_RUNNER_AVAILABLE"
49 script:
50 - mkdir build
51 - cd build
52 - ../configure --disable-libssh
53 - make --output-sync -j`nproc`
54 - make --output-sync -j`nproc` check V=1
55
56ubuntu-18.04-s390x-alldbg:
57 allow_failure: true
58 needs: []
59 stage: build
60 tags:
61 - ubuntu_18.04
62 - s390x
63 rules:
64 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
65 - if: "$S390X_RUNNER_AVAILABLE"
66 script:
67 - mkdir build
68 - cd build
69 - ../configure --enable-debug --disable-libssh
70 - make clean
71 - make --output-sync -j`nproc`
72 - make --output-sync -j`nproc` check V=1
73
74ubuntu-18.04-s390x-clang:
75 allow_failure: true
76 needs: []
77 stage: build
78 tags:
79 - ubuntu_18.04
80 - s390x
81 rules:
82 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
83   when: manual
84 - if: "$S390X_RUNNER_AVAILABLE"
85   when: manual
86 script:
87 - mkdir build
88 - cd build
89 - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
90 - make --output-sync -j`nproc`
91 - make --output-sync -j`nproc` check V=1
92
93ubuntu-18.04-s390x-tci:
94 allow_failure: true
95 needs: []
96 stage: build
97 tags:
98 - ubuntu_18.04
99 - s390x
100 rules:
101 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
102 - if: "$S390X_RUNNER_AVAILABLE"
103 script:
104 - mkdir build
105 - cd build
106 - ../configure --disable-libssh --enable-tcg-interpreter
107 - make --output-sync -j`nproc`
108
109ubuntu-18.04-s390x-notcg:
110 allow_failure: true
111 needs: []
112 stage: build
113 tags:
114 - ubuntu_18.04
115 - s390x
116 rules:
117 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
118   when: manual
119 - if: "$S390X_RUNNER_AVAILABLE"
120   when: manual
121 script:
122 - mkdir build
123 - cd build
124 - ../configure --disable-libssh --disable-tcg
125 - make --output-sync -j`nproc`
126 - make --output-sync -j`nproc` check V=1
127
128# All ubuntu-20.04 jobs should run successfully in an environment
129# setup by the scripts/ci/setup/qemu/build-environment.yml task
130# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
131ubuntu-20.04-aarch64-all-linux-static:
132 allow_failure: true
133 needs: []
134 stage: build
135 tags:
136 - ubuntu_20.04
137 - aarch64
138 rules:
139 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
140 - if: "$S390X_RUNNER_AVAILABLE"
141 script:
142 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
143 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
144 - mkdir build
145 - cd build
146 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
147 - make --output-sync -j`nproc`
148 - make --output-sync -j`nproc` check V=1
149 - make --output-sync -j`nproc` check-tcg V=1
150
151ubuntu-20.04-aarch64-all:
152 allow_failure: true
153 needs: []
154 stage: build
155 tags:
156 - ubuntu_20.04
157 - aarch64
158 rules:
159 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
160 - if: "$S390X_RUNNER_AVAILABLE"
161 script:
162 - mkdir build
163 - cd build
164 - ../configure --disable-libssh
165 - make --output-sync -j`nproc`
166 - make --output-sync -j`nproc` check V=1
167
168ubuntu-20.04-aarch64-alldbg:
169 allow_failure: true
170 needs: []
171 stage: build
172 tags:
173 - ubuntu_20.04
174 - aarch64
175 rules:
176 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
177 - if: "$S390X_RUNNER_AVAILABLE"
178 script:
179 - mkdir build
180 - cd build
181 - ../configure --enable-debug --disable-libssh
182 - make clean
183 - make --output-sync -j`nproc`
184 - make --output-sync -j`nproc` check V=1
185
186ubuntu-20.04-aarch64-clang:
187 allow_failure: true
188 needs: []
189 stage: build
190 tags:
191 - ubuntu_20.04
192 - aarch64
193 rules:
194 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
195   when: manual
196 - if: "$S390X_RUNNER_AVAILABLE"
197   when: manual
198 script:
199 - mkdir build
200 - cd build
201 - ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
202 - make --output-sync -j`nproc`
203 - make --output-sync -j`nproc` check V=1
204
205ubuntu-20.04-aarch64-tci:
206 allow_failure: true
207 needs: []
208 stage: build
209 tags:
210 - ubuntu_20.04
211 - aarch64
212 rules:
213 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
214 - if: "$S390X_RUNNER_AVAILABLE"
215 script:
216 - mkdir build
217 - cd build
218 - ../configure --disable-libssh --enable-tcg-interpreter
219 - make --output-sync -j`nproc`
220
221ubuntu-20.04-aarch64-notcg:
222 allow_failure: true
223 needs: []
224 stage: build
225 tags:
226 - ubuntu_20.04
227 - aarch64
228 rules:
229 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
230   when: manual
231 - if: "$S390X_RUNNER_AVAILABLE"
232   when: manual
233 script:
234 - mkdir build
235 - cd build
236 - ../configure --disable-libssh --disable-tcg
237 - make --output-sync -j`nproc`
238 - make --output-sync -j`nproc` check V=1
239