ci · nightly #90
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-License-Identifier: Apache-2.0 | |
| # | |
| # Nightly full gate (P0): the complete `make test` suite (host + QEMU acceptance). | |
| # Long-running; scheduled off-peak and available via workflow_dispatch. | |
| name: ci · nightly | |
| on: | |
| schedule: | |
| - cron: '0 3 * * *' | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| full-test: | |
| name: make test | |
| runs-on: ubuntu-24.04-arm | |
| timeout-minutes: 360 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Cache toolchains and heavy build inputs | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.swift/toolchains | |
| ~/.local/arm-gnu-toolchain | |
| ~/.local/bin | |
| sysroot | |
| models | |
| build/busybox.elf | |
| build/busybox.inputs-hash | |
| build/nginx-root | |
| build/nginx.inputs-hash | |
| build/sqlite-root | |
| build/sqlite.inputs-hash | |
| build/openssl-root | |
| build/openssl.inputs-hash | |
| build/nginx-certs | |
| build/swport-distfiles | |
| # Include tree-owned runtime + port recipes. restore-keys may still | |
| # rehydrate older roots; Makefile refuses/rebuilds unless each | |
| # build/<name>.inputs-hash matches scripts/artifact-inputs-hash.sh. | |
| key: bootstrap-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('ci/toolchain.env', 'scripts/build-newlib.sh', 'scripts/build-busybox.sh', 'scripts/artifact-inputs-hash.sh', 'scripts/busybox-inputs-hash.sh', 'scripts/build-nginx.sh', 'scripts/build-sqlite.sh', 'scripts/build-openssl.sh', 'userland/lib/crt0_newlib.S', 'userland/lib/newlib_syscalls.c', 'userland/user_newlib.ld', 'userland/compat/**', 'userland/nginx/swiftos/**', 'ports/databases/sqlite/Port.json', 'ports/www/nginx/Port.json', 'ports/security/openssl/Port.json') }} | |
| restore-keys: | | |
| bootstrap-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Bootstrap sysroot, busybox, models | |
| run: ./scripts/ci-bootstrap.sh | |
| - name: Export CI build environment | |
| run: | | |
| echo "SOURCE_DATE_EPOCH=0" >> "$GITHUB_ENV" | |
| ./scripts/ci-export-env.sh | |
| - name: Full test suite | |
| run: make test | |
| ops-test: | |
| name: prod + hetzner gates | |
| runs-on: ubuntu-24.04-arm | |
| timeout-minutes: 180 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Cache toolchains and heavy build inputs | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.swift/toolchains | |
| ~/.local/arm-gnu-toolchain | |
| ~/.local/bin | |
| sysroot | |
| models | |
| build/busybox.elf | |
| build/busybox.inputs-hash | |
| build/nginx-root | |
| build/nginx.inputs-hash | |
| build/sqlite-root | |
| build/sqlite.inputs-hash | |
| build/openssl-root | |
| build/openssl.inputs-hash | |
| build/nginx-certs | |
| build/swport-distfiles | |
| # Include tree-owned runtime + port recipes. restore-keys may still | |
| # rehydrate older roots; Makefile refuses/rebuilds unless each | |
| # build/<name>.inputs-hash matches scripts/artifact-inputs-hash.sh. | |
| key: bootstrap-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('ci/toolchain.env', 'scripts/build-newlib.sh', 'scripts/build-busybox.sh', 'scripts/artifact-inputs-hash.sh', 'scripts/busybox-inputs-hash.sh', 'scripts/build-nginx.sh', 'scripts/build-sqlite.sh', 'scripts/build-openssl.sh', 'userland/lib/crt0_newlib.S', 'userland/lib/newlib_syscalls.c', 'userland/user_newlib.ld', 'userland/compat/**', 'userland/nginx/swiftos/**', 'ports/databases/sqlite/Port.json', 'ports/www/nginx/Port.json', 'ports/security/openssl/Port.json') }} | |
| restore-keys: | | |
| bootstrap-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Bootstrap sysroot, busybox, models | |
| run: ./scripts/ci-bootstrap.sh | |
| - name: Export CI build environment | |
| run: ./scripts/ci-export-env.sh | |
| - name: Production boot profile smoke | |
| run: make prod-boot-test | |
| - name: Hetzner deploy pipeline (build stage) | |
| run: make hetzner-deploy-pipeline-test | |
| - name: Hetzner deploy regression (QEMU topology) | |
| run: make hetzner-deploy-test |