124 lines
5.0 KiB
YAML
124 lines
5.0 KiB
YAML
name: Lint Action Pinning
|
|
|
|
# No trigger-level `paths:` filter, deliberately. A workflow skipped by one
|
|
# reports no conclusion at all, and a required check that never reports leaves
|
|
# a pull request unable to enter a merge queue and a merge group unable to
|
|
# leave it. `merge_group` cannot carry a `paths:` filter in the first place.
|
|
#
|
|
# The heavier gates push their filtering down into a `changes` job (see
|
|
# `.github/scripts/changed-paths.py`). This one is deliberately unfiltered
|
|
# instead: the list it replaced had grown to thirty-odd entries that each had
|
|
# to be added by hand whenever a contract test gained a new subject, and every
|
|
# omission was a silently unguarded file. Always running is both cheaper to
|
|
# reason about and strictly safer. See docs/ci-merge-queue.md.
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
merge_group:
|
|
types: [checks_requested]
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
# Never cancel a merge-queue run. Its ref is unique per queue entry, so a
|
|
# cancellation here could only come from a mis-keyed group, and the queue
|
|
# would read the cancelled check as a failure and eject the pull request.
|
|
cancel-in-progress: ${{ github.event_name != 'merge_group' }}
|
|
|
|
# Least-privilege: only reads source.
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
lint:
|
|
name: All action refs are SHA-pinned
|
|
# Checkout receives the short-lived job token. Keep this credential-bearing
|
|
# path on GitHub-hosted capacity during the external-runner pilot.
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Test action-pinning lint
|
|
run: python3 .github/scripts/lint-action-pinning_test.py
|
|
|
|
- name: Test in-job path filter
|
|
run: python3 .github/scripts/changed-paths_test.py
|
|
|
|
- name: Test Claude Code review workflow contract
|
|
run: python3 .github/scripts/claude-code-review-workflow-contract_test.py
|
|
|
|
- name: Test PR walkthrough workflow contract
|
|
run: |
|
|
python3 .github/scripts/pr-walkthrough-workflow-contract_test.py
|
|
python3 scripts/pr-walkthrough-pr-body.test.py
|
|
python3 .agents/skills/pr-walkthrough/scripts/pr-walkthrough-context.test.py
|
|
python3 .agents/skills/pr-walkthrough/scripts/pr-walkthrough-render.test.py
|
|
|
|
- name: Test preview environment workflow contract
|
|
run: python3 .github/scripts/preview-env-workflow-contract_test.py
|
|
|
|
- name: Test OpenCode code review workflow contract
|
|
run: python3 .github/scripts/opencode-code-review-workflow-contract_test.py
|
|
|
|
- name: Test frontend tests workflow contract
|
|
run: python3 .github/scripts/frontend-tests-workflow-contract_test.py
|
|
|
|
- name: Test release workflow contract
|
|
run: python3 .github/scripts/release-workflow-contract_test.py
|
|
|
|
- name: Test E2E workflow contract
|
|
run: python3 .github/scripts/e2e-tests-workflow-contract_test.py
|
|
|
|
- name: Test external runner workflow contract
|
|
run: python3 .github/scripts/external-runner-workflow-contract_test.py
|
|
|
|
- name: Test external runner planner
|
|
run: python3 .github/scripts/runner-plan_test.py
|
|
|
|
- name: Test bounded step summary
|
|
run: python3 .github/scripts/bounded-step-summary_test.py
|
|
|
|
- name: Test backend tests workflow contract
|
|
run: python3 .github/scripts/backend-tests-workflow-contract_test.py
|
|
|
|
- name: Test stale merge approval revocation workflow contract
|
|
run: python3 .github/scripts/revoke-ready-to-merge-workflow-contract_test.py
|
|
|
|
- name: Test pull request size label workflow contract
|
|
run: python3 .github/scripts/pr-size-label-workflow-contract_test.py
|
|
|
|
- name: Test pull request documentation workflow contract
|
|
run: python3 .github/scripts/pr-docs-workflow-contract_test.py
|
|
|
|
- name: Test pull request documentation validator
|
|
run: node --test .github/scripts/pr-docs.test.cjs
|
|
|
|
- name: Test managed runtime pin update workflow contract
|
|
run: python3 .github/scripts/update-agent-runtime-pins-workflow-contract_test.py
|
|
|
|
- name: Test backend tests workflow contract
|
|
run: python3 .github/scripts/backend-tests-workflow-contract_test.py
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
|
|
with:
|
|
node-version: "24"
|
|
|
|
- name: Test runtime bundle contract
|
|
run: bash scripts/release/runtime-bundle.test.sh
|
|
|
|
- name: Test GHCR retry helper
|
|
run: bash scripts/release/retry-ghcr-command.test.sh
|
|
|
|
- name: Test npm release helpers
|
|
run: node --test scripts/release/nightly-version.test.mjs scripts/release/nightly-release.test.mjs scripts/release/npm-view-version.test.mjs scripts/release/publish-npm.test.mjs scripts/release/update-scoop-bucket.test.mjs
|
|
|
|
- name: Verify action refs
|
|
run: python3 .github/scripts/lint-action-pinning.py
|