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