ci-nightly #41
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
| name: ci-nightly | |
| # Runs the C embedding stress on every supported host once a day, | |
| # in addition to release-gate (which the PR matrix already runs). | |
| # GC stress and fault-injection tests live in the mino-tests | |
| # satellite repo's nightly workflow now. | |
| on: | |
| schedule: | |
| # 04:00 UTC daily. Off-peak relative to most contributors. | |
| - cron: '0 4 * * *' | |
| workflow_dispatch: | |
| jobs: | |
| extended: | |
| name: extended (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Same host set as ci.yml's PR matrix. Windows skips the | |
| # extended battery for the same reason it skips release-gate | |
| # in ci.yml -- ASan path needs a libsanitizer mingw doesn't | |
| # ship, and several stress tasks depend on it. | |
| os: [ubuntu-24.04, ubuntu-24.04-arm, macos-14] | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash | |
| timeout-minutes: 45 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Bootstrap mino | |
| run: make | |
| - name: Release gate | |
| # First gate -- if release-gate fails, the rest of the | |
| # nightly battery is noise. Same gate as PR CI; included | |
| # here so nightly is self-contained. | |
| run: ./mino task release-gate | |
| timeout-minutes: 12 | |
| - name: Embed stress | |
| run: ./mino task test-embed | |
| timeout-minutes: 10 | |
| # Clang static-analyzer gate on one pinned-zig runner. Off the PR | |
| # path on purpose: the analyzer is slow (~90s) and its raw output is | |
| # noisy (clang cross-TU false positives), so it runs nightly rather | |
| # than gating every merge. Promoted from advisory to a GATE: the | |
| # triaged finding set is checked in at tools/analyze_baseline.txt and | |
| # check-analyze-zig fails the job on any finding NOT in the baseline | |
| # -- a genuinely new analyzer hit. The advisory full-report step runs | |
| # first for visibility, then the gate enforces no-regressions. | |
| analyze: | |
| name: analyze-zig (clang static analyzer, baseline gate) | |
| runs-on: ubuntu-24.04 | |
| defaults: | |
| run: | |
| shell: bash | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install pinned Zig | |
| # Must match zig-version-pin in lib/mino/tasks/builtin.clj. | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.16.0 | |
| - name: Bootstrap mino | |
| run: make | |
| - name: Static analyzer report (advisory, full output) | |
| run: ./mino task analyze-zig | |
| - name: Static analyzer gate (fail on new findings vs baseline) | |
| run: ./mino task check-analyze-zig |