Phase 1 gate: the Hints spike, and its verdict is proceed #84
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: check | |
| # The gate, run by a machine that has never seen this repo before — which is | |
| # the only way to know `just check` passing locally means anything. | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| env: | |
| MIX_ENV: test | |
| jobs: | |
| check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: erlef/setup-beam@v1 | |
| with: | |
| elixir-version: "1.18" | |
| otp-version: "27" | |
| - name: Cache deps and build | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| deps | |
| _build | |
| key: ${{ runner.os }}-mix-${{ hashFiles('mix.lock') }} | |
| restore-keys: ${{ runner.os }}-mix- | |
| - run: mix deps.get | |
| # Formatting is part of the gate, not a suggestion. | |
| - run: mix format --check-formatted | |
| # Warnings are errors here for the same reason they are locally: a | |
| # warning nobody fails on is a warning nobody reads. | |
| - run: mix compile --warnings-as-errors | |
| - run: mix test | |
| # The same suite with every file store fsyncing each transaction. The | |
| # durable path is the one production runs and the one no test would | |
| # otherwise take — a flag no test sets is an untested path. | |
| - run: mix test | |
| env: | |
| LEDGER_SYNC: "true" | |
| # The crash tests spawn a real node in dev. Compile it first so the kill | |
| # lands on a process that is writing rather than one still starting. | |
| - run: MIX_ENV=dev mix compile | |
| # Slow and real: a process killed with SIGKILL mid-write, three times. | |
| # Excluded from the ordinary run, never excluded from the gate. | |
| - run: mix test --include crash --only crash | |
| # The backup signs SigV4 by hand, and a signature that is subtly wrong | |
| # fails only against a real server. This talks to a real bucket, under a | |
| # prefix of its own so a run can never touch what a deployment holds. | |
| - run: mix test --include object_storage --only object_storage | |
| env: | |
| BACKUP_ENDPOINT: ${{ secrets.BACKUP_ENDPOINT }} | |
| BACKUP_BUCKET: ${{ secrets.BACKUP_BUCKET }} | |
| BACKUP_ACCESS_KEY_ID: ${{ secrets.BACKUP_ACCESS_KEY_ID }} | |
| BACKUP_SECRET_ACCESS_KEY: ${{ secrets.BACKUP_SECRET_ACCESS_KEY }} | |
| vocabulary: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: astral-sh/setup-uv@v5 | |
| - name: The ontology gate | |
| run: | | |
| uvx --from "git+https://github.com/shinyobjectz/montology@main#subdirectory=.monty/cli" \ | |
| monty lint |