| 1 | # Soil wrapped in Github Actions.
|
| 2 |
|
| 3 | name: oil
|
| 4 | on:
|
| 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
|
| 25 | env:
|
| 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 }}
|
| 31 | jobs:
|
| 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 | env:
|
| 49 | # for deploying to dashboard
|
| 50 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 51 | run: |
|
| 52 | soil/github-actions.sh publish-and-exit raw-vm T
|
| 53 |
|
| 54 | dev-setup-debian:
|
| 55 | runs-on: ubuntu-22.04
|
| 56 | env:
|
| 57 | REPO_ROOT: ${{ github.workspace }}
|
| 58 | steps:
|
| 59 | - name: Check out repository code
|
| 60 | uses: actions/checkout@v4
|
| 61 |
|
| 62 | - name: dev-setup-debian
|
| 63 | run: |
|
| 64 | soil/worker.sh JOB-dev-setup-debian
|
| 65 |
|
| 66 | - name: publish-html
|
| 67 | env:
|
| 68 | # for deploying to dashboard
|
| 69 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 70 | run: |
|
| 71 | soil/github-actions.sh publish-and-exit dev-setup-debian T
|
| 72 |
|
| 73 | dummy:
|
| 74 | runs-on: ubuntu-22.04
|
| 75 | # container: oilshell/soil-dummy
|
| 76 | env:
|
| 77 | REPO_ROOT: ${{ github.workspace }}
|
| 78 | steps:
|
| 79 | - name: Check out repository code
|
| 80 | uses: actions/checkout@v4
|
| 81 |
|
| 82 | # UPGRADED to podman
|
| 83 | - name: dummy
|
| 84 | run: |
|
| 85 | soil/github-actions.sh run-job dummy podman
|
| 86 |
|
| 87 | - name: publish-html
|
| 88 | env:
|
| 89 | # for deploying to dashboard
|
| 90 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 91 | run: |
|
| 92 | soil/github-actions.sh publish-and-exit dummy T
|
| 93 |
|
| 94 | dev-minimal:
|
| 95 | # https://github.com/actions/virtual-environments
|
| 96 | runs-on: ubuntu-22.04
|
| 97 | env:
|
| 98 | REPO_ROOT: ${{ github.workspace }}
|
| 99 | steps:
|
| 100 | - name: Check out repository code
|
| 101 | uses: actions/checkout@v4
|
| 102 |
|
| 103 | - name: dev-minimal
|
| 104 | run: |
|
| 105 | soil/github-actions.sh run-job dev-minimal
|
| 106 |
|
| 107 | - name: publish-html
|
| 108 | env:
|
| 109 | # for deploying to dashboard
|
| 110 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 111 | run: |
|
| 112 | soil/github-actions.sh publish-and-exit dev-minimal T
|
| 113 |
|
| 114 | interactive:
|
| 115 | runs-on: ubuntu-22.04
|
| 116 | env:
|
| 117 | REPO_ROOT: ${{ github.workspace }}
|
| 118 | steps:
|
| 119 | - name: Check out repository code
|
| 120 | uses: actions/checkout@v4
|
| 121 |
|
| 122 | - name: Fix kernel mmap rnd bits
|
| 123 | # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
|
| 124 | # high-entropy ASLR in much newer kernels that GitHub runners are
|
| 125 | # using leading to random crashes: https://reviews.llvm.org/D148280
|
| 126 | run: sudo sysctl vm.mmap_rnd_bits=28
|
| 127 |
|
| 128 | - name: interactive
|
| 129 | run: |
|
| 130 | soil/github-actions.sh run-job interactive
|
| 131 |
|
| 132 | - name: publish-html
|
| 133 | env:
|
| 134 | # for deploying to dashboard
|
| 135 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 136 | run: |
|
| 137 | soil/github-actions.sh publish-and-exit interactive T
|
| 138 |
|
| 139 | pea:
|
| 140 | runs-on: ubuntu-22.04
|
| 141 | env:
|
| 142 | REPO_ROOT: ${{ github.workspace }}
|
| 143 | steps:
|
| 144 | - name: Check out repository code
|
| 145 | uses: actions/checkout@v4
|
| 146 |
|
| 147 | # UPGRADED to podman
|
| 148 | - name: pea
|
| 149 | run: |
|
| 150 | soil/github-actions.sh run-job pea podman
|
| 151 |
|
| 152 | - name: publish-html
|
| 153 | env:
|
| 154 | # for deploying to dashboard
|
| 155 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 156 | run: |
|
| 157 | soil/github-actions.sh publish-and-exit pea T
|
| 158 |
|
| 159 | other-tests:
|
| 160 | runs-on: ubuntu-22.04
|
| 161 | env:
|
| 162 | REPO_ROOT: ${{ github.workspace }}
|
| 163 | steps:
|
| 164 | - name: Check out repository code
|
| 165 | uses: actions/checkout@v4
|
| 166 |
|
| 167 | - name: other-tests
|
| 168 | run: |
|
| 169 | soil/github-actions.sh run-job other-tests
|
| 170 |
|
| 171 | - name: publish-html
|
| 172 | env:
|
| 173 | # for deploying to dashboard
|
| 174 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 175 | run: |
|
| 176 | soil/github-actions.sh publish-and-exit other-tests T
|
| 177 |
|
| 178 | ovm-tarball:
|
| 179 | runs-on: ubuntu-22.04
|
| 180 | env:
|
| 181 | REPO_ROOT: ${{ github.workspace }}
|
| 182 | steps:
|
| 183 | - name: Check out repository code
|
| 184 | uses: actions/checkout@v4
|
| 185 |
|
| 186 | - name: ovm-tarball
|
| 187 | run: |
|
| 188 | soil/github-actions.sh run-job ovm-tarball
|
| 189 |
|
| 190 | - name: publish-html
|
| 191 | env:
|
| 192 | # for deploying to dashboard
|
| 193 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 194 | run: |
|
| 195 | soil/github-actions.sh publish-and-exit ovm-tarball T
|
| 196 |
|
| 197 | app-tests:
|
| 198 | runs-on: ubuntu-22.04
|
| 199 | env:
|
| 200 | REPO_ROOT: ${{ github.workspace }}
|
| 201 | needs: ['cpp-tarball']
|
| 202 | steps:
|
| 203 | - name: Check out repository code
|
| 204 | uses: actions/checkout@v4
|
| 205 |
|
| 206 | - name: app-tests
|
| 207 | run: |
|
| 208 | soil/github-actions.sh run-job app-tests
|
| 209 |
|
| 210 | - name: publish-html
|
| 211 | env:
|
| 212 | # for deploying to dashboard
|
| 213 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 214 | run: |
|
| 215 | soil/github-actions.sh publish-and-exit app-tests T
|
| 216 |
|
| 217 | cpp-coverage:
|
| 218 | runs-on: ubuntu-22.04
|
| 219 | env:
|
| 220 | REPO_ROOT: ${{ github.workspace }}
|
| 221 | steps:
|
| 222 | - name: Check out repository code
|
| 223 | uses: actions/checkout@v4
|
| 224 |
|
| 225 | - name: cpp-coverage
|
| 226 | run: |
|
| 227 | soil/github-actions.sh run-job cpp-coverage
|
| 228 |
|
| 229 | - name: publish-html
|
| 230 | env:
|
| 231 | # for deploying to dashboard
|
| 232 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 233 | run: |
|
| 234 | soil/github-actions.sh publish-and-exit cpp-coverage T
|
| 235 |
|
| 236 | benchmarks:
|
| 237 | runs-on: ubuntu-22.04
|
| 238 | env:
|
| 239 | REPO_ROOT: ${{ github.workspace }}
|
| 240 | steps:
|
| 241 | - name: Check out repository code
|
| 242 | uses: actions/checkout@v4
|
| 243 |
|
| 244 | - name: benchmarks
|
| 245 | run: |
|
| 246 | soil/github-actions.sh run-job benchmarks
|
| 247 |
|
| 248 | - name: publish-html
|
| 249 | env:
|
| 250 | # for deploying to dashboard
|
| 251 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 252 | run: |
|
| 253 | soil/github-actions.sh publish-and-exit benchmarks T
|
| 254 |
|
| 255 | bloaty:
|
| 256 | needs: ['cpp-tarball']
|
| 257 | runs-on: ubuntu-22.04
|
| 258 | env:
|
| 259 | REPO_ROOT: ${{ github.workspace }}
|
| 260 | steps:
|
| 261 | - name: Check out repository code
|
| 262 | uses: actions/checkout@v4
|
| 263 |
|
| 264 | - name: bloaty
|
| 265 | run: |
|
| 266 | soil/github-actions.sh run-job bloaty
|
| 267 |
|
| 268 | - name: publish-html
|
| 269 | env:
|
| 270 | # for deploying to dashboard
|
| 271 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 272 | run: |
|
| 273 | soil/github-actions.sh publish-and-exit bloaty T
|
| 274 |
|
| 275 | benchmarks2:
|
| 276 | needs: ['cpp-tarball']
|
| 277 | runs-on: ubuntu-22.04
|
| 278 | env:
|
| 279 | REPO_ROOT: ${{ github.workspace }}
|
| 280 | steps:
|
| 281 | - name: Check out repository code
|
| 282 | uses: actions/checkout@v4
|
| 283 |
|
| 284 | - name: benchmarks2
|
| 285 | run: |
|
| 286 | soil/github-actions.sh run-job benchmarks2
|
| 287 |
|
| 288 | - name: publish-html
|
| 289 | env:
|
| 290 | # for deploying to dashboard
|
| 291 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 292 | run: |
|
| 293 | soil/github-actions.sh publish-and-exit benchmarks2 T
|
| 294 |
|
| 295 | cpp-small:
|
| 296 | runs-on: ubuntu-22.04
|
| 297 | env:
|
| 298 | REPO_ROOT: ${{ github.workspace }}
|
| 299 | steps:
|
| 300 | - name: Check out repository code
|
| 301 | uses: actions/checkout@v4
|
| 302 |
|
| 303 | - name: Fix kernel mmap rnd bits
|
| 304 | # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
|
| 305 | # high-entropy ASLR in much newer kernels that GitHub runners are
|
| 306 | # using leading to random crashes: https://reviews.llvm.org/D148280
|
| 307 | run: sudo sysctl vm.mmap_rnd_bits=28
|
| 308 |
|
| 309 | - name: cpp-small
|
| 310 | run: |
|
| 311 | soil/github-actions.sh run-job cpp-small
|
| 312 |
|
| 313 | - name: publish-html
|
| 314 | env:
|
| 315 | # for deploying to dashboard
|
| 316 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 317 | run: |
|
| 318 | soil/github-actions.sh publish-and-exit cpp-small T
|
| 319 |
|
| 320 | cpp-tarball:
|
| 321 | runs-on: ubuntu-22.04
|
| 322 | env:
|
| 323 | REPO_ROOT: ${{ github.workspace }}
|
| 324 | steps:
|
| 325 | - name: Check out repository code
|
| 326 | uses: actions/checkout@v4
|
| 327 |
|
| 328 | - name: Fix kernel mmap rnd bits
|
| 329 | # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
|
| 330 | # high-entropy ASLR in much newer kernels that GitHub runners are
|
| 331 | # using leading to random crashes: https://reviews.llvm.org/D148280
|
| 332 | run: sudo sysctl vm.mmap_rnd_bits=28
|
| 333 |
|
| 334 | - name: cpp-tarball
|
| 335 | run: |
|
| 336 | soil/github-actions.sh run-job cpp-tarball
|
| 337 |
|
| 338 | # can't be done inside container
|
| 339 | - name: publish-cpp-tarball
|
| 340 | env:
|
| 341 | # auth for web server
|
| 342 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 343 | run: |
|
| 344 | soil/github-actions.sh publish-cpp-tarball
|
| 345 |
|
| 346 | - name: publish-html
|
| 347 | env:
|
| 348 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 349 | run: |
|
| 350 | soil/github-actions.sh publish-and-exit cpp-tarball T
|
| 351 |
|
| 352 | cpp-spec:
|
| 353 | runs-on: ubuntu-22.04
|
| 354 | env:
|
| 355 | REPO_ROOT: ${{ github.workspace }}
|
| 356 | steps:
|
| 357 | - name: Check out repository code
|
| 358 | uses: actions/checkout@v4
|
| 359 |
|
| 360 | - name: Fix kernel mmap rnd bits
|
| 361 | # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
|
| 362 | # high-entropy ASLR in much newer kernels that GitHub runners are
|
| 363 | # using leading to random crashes: https://reviews.llvm.org/D148280
|
| 364 | run: sudo sysctl vm.mmap_rnd_bits=28
|
| 365 |
|
| 366 | - name: cpp-spec
|
| 367 | run: |
|
| 368 | soil/github-actions.sh run-job cpp-spec
|
| 369 |
|
| 370 | - name: publish-html
|
| 371 | env:
|
| 372 | # for deploying to dashboard
|
| 373 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 374 | run: |
|
| 375 | soil/github-actions.sh publish-and-exit cpp-spec T
|
| 376 |
|
| 377 | wild:
|
| 378 | runs-on: ubuntu-22.04
|
| 379 | env:
|
| 380 | REPO_ROOT: ${{ github.workspace }}
|
| 381 | needs: ['cpp-tarball']
|
| 382 | steps:
|
| 383 | - name: Check out repository code
|
| 384 | uses: actions/checkout@v4
|
| 385 |
|
| 386 | - name: wild
|
| 387 | run: |
|
| 388 | soil/github-actions.sh run-job wild
|
| 389 |
|
| 390 | - name: publish-html
|
| 391 | env:
|
| 392 | # for deploying to dashboard
|
| 393 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 394 | run: |
|
| 395 | soil/github-actions.sh publish-and-exit wild T
|
| 396 |
|
| 397 | maybe-merge-to-master:
|
| 398 | runs-on: ubuntu-22.04
|
| 399 | env:
|
| 400 | REPO_ROOT: ${{ github.workspace }}
|
| 401 | # List of tasks to wait on. Copied from soil/worker.sh list-jobs
|
| 402 | needs: ['dummy', 'bloaty', 'benchmarks', 'benchmarks2', 'dev-minimal', 'cpp-coverage', 'cpp-small', 'cpp-spec', 'cpp-tarball', 'interactive', 'ovm-tarball', 'pea', 'other-tests', 'app-tests', 'wild', 'raw-vm', 'dev-setup-debian']
|
| 403 | #needs: ['dummy', 'pea', 'other-tests']
|
| 404 | steps:
|
| 405 | - name: Check out repository code
|
| 406 | uses: actions/checkout@v4
|
| 407 |
|
| 408 | - name: maybe-merge
|
| 409 | env:
|
| 410 | SOIL_GITHUB_API_TOKEN: ${{ secrets.SOIL_GITHUB_API_TOKEN }}
|
| 411 | run: |
|
| 412 | soil/worker.sh JOB-maybe-merge
|
| 413 |
|
| 414 | - name: publish-html
|
| 415 | env:
|
| 416 | # for deploying to dashboard
|
| 417 | OILS_GITHUB_KEY: ${{ secrets.OILS_GITHUB_KEY }}
|
| 418 | run: |
|
| 419 | # NOTE: does not publish to status API
|
| 420 | soil/github-actions.sh publish-and-exit maybe-merge
|