OILS / .github / workflows / all-builds.yml View on Github | oils.pub

386 lines, 323 significant
1# Soil wrapped in Github Actions.
2
3name: oils
4on:
5 # We are running into the pitfall here
6 # https://fusectore.dev/2022/09/25/github-actions-pitfalls.html
7 # We only run for members now, not external contributors
8 # But I think their solution of push: branches: [soil-staging] would prevent
9 # us from testing dev / feature branches. We would have to create a PR
10 # first?
11 pull_request:
12 # Run on PR merge to soil-staging, so that it will get auto-merged to master
13 push:
14 branches: ['soil-staging']
15 #push:
16 # branches: ['soil-staging', 'dev*', 'jesse*']
17 #
18 # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
19 # I think that is sufficient for dev branches.
20
21 # don't run CI on master because we test soil-staging and auto-merge.
22 #push:
23 # branches-ignore:
24 # - master
25env:
26 # Only set for PR runs.
27 # https://docs.github.com/en/webhooks-and-events/webhooks/webhook-events-and-payloads#pull_request
28 GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
29 GITHUB_PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
30 GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
31jobs:
32 # The perf tool depends on a specific version of a kernel, so run it outside
33 # a container.
34 raw-vm:
35 runs-on: ubuntu-22.04
36 env:
37 REPO_ROOT: ${{ github.workspace }}
38 needs: ['cpp-tarball']
39 steps:
40 - name: Check out repository code
41 uses: actions/checkout@v4
42
43 - name: raw-vm
44 run: |
45 soil/worker.sh JOB-raw-vm
46
47 - name: publish-html
48 run: |
49 soil/github-actions.sh publish-and-exit raw-vm T
50
51 dev-setup-debian:
52 runs-on: ubuntu-22.04
53 env:
54 REPO_ROOT: ${{ github.workspace }}
55 steps:
56 - name: Check out repository code
57 uses: actions/checkout@v4
58
59 - name: dev-setup-debian
60 run: |
61 soil/worker.sh JOB-dev-setup-debian
62
63 - name: publish-html
64 run: |
65 soil/github-actions.sh publish-and-exit dev-setup-debian T
66
67 dummy:
68 runs-on: ubuntu-22.04
69 # container: oilshell/soil-dummy
70 env:
71 REPO_ROOT: ${{ github.workspace }}
72 steps:
73 - name: Check out repository code
74 uses: actions/checkout@v4
75
76 # UPGRADED to podman
77 - name: dummy
78 run: |
79 soil/github-actions.sh run-job dummy podman
80
81 - name: publish-html
82 run: |
83 soil/github-actions.sh publish-and-exit dummy T
84
85 dev-minimal:
86 # https://github.com/actions/virtual-environments
87 runs-on: ubuntu-22.04
88 env:
89 REPO_ROOT: ${{ github.workspace }}
90 steps:
91 - name: Check out repository code
92 uses: actions/checkout@v4
93
94 - name: dev-minimal
95 run: |
96 soil/github-actions.sh run-job dev-minimal
97
98 - name: publish-html
99 run: |
100 soil/github-actions.sh publish-and-exit dev-minimal T
101
102 interactive:
103 runs-on: ubuntu-22.04
104 env:
105 REPO_ROOT: ${{ github.workspace }}
106 steps:
107 - name: Check out repository code
108 uses: actions/checkout@v4
109
110 - name: Fix kernel mmap rnd bits
111 # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
112 # high-entropy ASLR in much newer kernels that GitHub runners are
113 # using leading to random crashes: https://reviews.llvm.org/D148280
114 run: sudo sysctl vm.mmap_rnd_bits=28
115
116 - name: interactive
117 run: |
118 soil/github-actions.sh run-job interactive
119
120 - name: publish-html
121 run: |
122 soil/github-actions.sh publish-and-exit interactive T
123
124 pea:
125 runs-on: ubuntu-22.04
126 env:
127 REPO_ROOT: ${{ github.workspace }}
128 steps:
129 - name: Check out repository code
130 uses: actions/checkout@v4
131
132 # UPGRADED to podman
133 - name: pea
134 run: |
135 soil/github-actions.sh run-job pea podman
136
137 - name: publish-html
138 run: |
139 soil/github-actions.sh publish-and-exit pea T
140
141 other-tests:
142 runs-on: ubuntu-22.04
143 env:
144 REPO_ROOT: ${{ github.workspace }}
145 steps:
146 - name: Check out repository code
147 uses: actions/checkout@v4
148
149 - name: other-tests
150 run: |
151 soil/github-actions.sh run-job other-tests
152
153 - name: publish-html
154 run: |
155 soil/github-actions.sh publish-and-exit other-tests T
156
157 ovm-tarball:
158 runs-on: ubuntu-22.04
159 env:
160 REPO_ROOT: ${{ github.workspace }}
161 steps:
162 - name: Check out repository code
163 uses: actions/checkout@v4
164
165 - name: ovm-tarball
166 run: |
167 soil/github-actions.sh run-job ovm-tarball
168
169 - name: publish-html
170 run: |
171 soil/github-actions.sh publish-and-exit ovm-tarball T
172
173 app-tests:
174 runs-on: ubuntu-22.04
175 env:
176 REPO_ROOT: ${{ github.workspace }}
177 needs: ['cpp-tarball']
178 steps:
179 - name: Check out repository code
180 uses: actions/checkout@v4
181
182 - name: app-tests
183 run: |
184 soil/github-actions.sh run-job app-tests
185
186 - name: publish-html
187 run: |
188 soil/github-actions.sh publish-and-exit app-tests T
189
190 cpp-coverage:
191 runs-on: ubuntu-22.04
192 env:
193 REPO_ROOT: ${{ github.workspace }}
194 steps:
195 - name: Check out repository code
196 uses: actions/checkout@v4
197
198 - name: cpp-coverage
199 run: |
200 soil/github-actions.sh run-job cpp-coverage
201
202 - name: publish-html
203 run: |
204 soil/github-actions.sh publish-and-exit cpp-coverage T
205
206 benchmarks:
207 runs-on: ubuntu-22.04
208 env:
209 REPO_ROOT: ${{ github.workspace }}
210 steps:
211 - name: Check out repository code
212 uses: actions/checkout@v4
213
214 - name: benchmarks
215 run: |
216 soil/github-actions.sh run-job benchmarks
217
218 - name: publish-html
219 run: |
220 soil/github-actions.sh publish-and-exit benchmarks T
221
222 bloaty:
223 needs: ['cpp-tarball']
224 runs-on: ubuntu-22.04
225 env:
226 REPO_ROOT: ${{ github.workspace }}
227 steps:
228 - name: Check out repository code
229 uses: actions/checkout@v4
230
231 - name: bloaty
232 run: |
233 soil/github-actions.sh run-job bloaty
234
235 - name: publish-html
236 run: |
237 soil/github-actions.sh publish-and-exit bloaty T
238
239 benchmarks2:
240 needs: ['cpp-tarball']
241 runs-on: ubuntu-22.04
242 env:
243 REPO_ROOT: ${{ github.workspace }}
244 steps:
245 - name: Check out repository code
246 uses: actions/checkout@v4
247
248 - name: benchmarks2
249 run: |
250 soil/github-actions.sh run-job benchmarks2
251
252 - name: publish-html
253 run: |
254 soil/github-actions.sh publish-and-exit benchmarks2 T
255
256 benchmarks3:
257 # Note: add this back if we completely switch from Ninja to the tarball
258 # build
259 #needs: ['cpp-tarball']
260 runs-on: ubuntu-22.04
261 env:
262 REPO_ROOT: ${{ github.workspace }}
263 steps:
264 - name: Check out repository code
265 uses: actions/checkout@v4
266
267 - name: benchmarks3
268 run: |
269 soil/github-actions.sh run-job benchmarks3
270
271 - name: publish-html
272 run: |
273 soil/github-actions.sh publish-and-exit benchmarks3 T
274
275 cpp-small:
276 runs-on: ubuntu-22.04
277 env:
278 REPO_ROOT: ${{ github.workspace }}
279 steps:
280 - name: Check out repository code
281 uses: actions/checkout@v4
282
283 - name: Fix kernel mmap rnd bits
284 # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
285 # high-entropy ASLR in much newer kernels that GitHub runners are
286 # using leading to random crashes: https://reviews.llvm.org/D148280
287 run: sudo sysctl vm.mmap_rnd_bits=28
288
289 - name: cpp-small
290 run: |
291 soil/github-actions.sh run-job cpp-small
292
293 - name: publish-html
294 run: |
295 soil/github-actions.sh publish-and-exit cpp-small T
296
297 cpp-tarball:
298 runs-on: ubuntu-22.04
299 env:
300 REPO_ROOT: ${{ github.workspace }}
301 steps:
302 - name: Check out repository code
303 uses: actions/checkout@v4
304
305 - name: Fix kernel mmap rnd bits
306 # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
307 # high-entropy ASLR in much newer kernels that GitHub runners are
308 # using leading to random crashes: https://reviews.llvm.org/D148280
309 run: sudo sysctl vm.mmap_rnd_bits=28
310
311 - name: cpp-tarball
312 run: |
313 soil/github-actions.sh run-job cpp-tarball
314
315 # can't be done inside container
316 - name: publish-cpp-tarball
317 env:
318 # auth for web server
319 OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
320 run: |
321 soil/github-actions.sh publish-cpp-tarball
322
323 - name: publish-html
324 run: |
325 soil/github-actions.sh publish-and-exit cpp-tarball T
326
327 cpp-spec:
328 runs-on: ubuntu-22.04
329 env:
330 REPO_ROOT: ${{ github.workspace }}
331 steps:
332 - name: Check out repository code
333 uses: actions/checkout@v4
334
335 - name: Fix kernel mmap rnd bits
336 # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
337 # high-entropy ASLR in much newer kernels that GitHub runners are
338 # using leading to random crashes: https://reviews.llvm.org/D148280
339 run: sudo sysctl vm.mmap_rnd_bits=28
340
341 - name: cpp-spec
342 run: |
343 soil/github-actions.sh run-job cpp-spec
344
345 - name: publish-html
346 run: |
347 soil/github-actions.sh publish-and-exit cpp-spec T
348
349 wild:
350 runs-on: ubuntu-22.04
351 env:
352 REPO_ROOT: ${{ github.workspace }}
353 needs: ['cpp-tarball']
354 steps:
355 - name: Check out repository code
356 uses: actions/checkout@v4
357
358 - name: wild
359 run: |
360 soil/github-actions.sh run-job wild
361
362 - name: publish-html
363 run: |
364 soil/github-actions.sh publish-and-exit wild T
365
366 maybe-merge-to-master:
367 runs-on: ubuntu-22.04
368 env:
369 REPO_ROOT: ${{ github.workspace }}
370 # List of tasks to wait on. Copied from soil/worker.sh list-jobs
371 needs: ['dummy', 'bloaty', 'benchmarks', 'benchmarks2', 'benchmarks3', 'dev-minimal', 'cpp-coverage', 'cpp-small', 'cpp-spec', 'cpp-tarball', 'interactive', 'ovm-tarball', 'pea', 'other-tests', 'app-tests', 'wild', 'raw-vm', 'dev-setup-debian']
372 #needs: ['dummy', 'pea', 'other-tests']
373 steps:
374 - name: Check out repository code
375 uses: actions/checkout@v4
376
377 - name: maybe-merge
378 env:
379 SOIL_GITHUB_API_TOKEN: ${{ secrets.SOIL_GITHUB_API_TOKEN }}
380 run: |
381 soil/worker.sh JOB-maybe-merge
382
383 - name: publish-html
384 run: |
385 # NOTE: does not publish to status API
386 soil/github-actions.sh publish-and-exit maybe-merge