69 lines
2.4 KiB
YAML
69 lines
2.4 KiB
YAML
name: Lint Harness Files
|
|
|
|
# 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 job is a checkout plus short
|
|
# linters, so the whole list is replaced by always running this job. This is
|
|
# cheaper than the job that would decide whether to run it. It also closes the
|
|
# gap where a harness file outside the old list changed and nothing checked it.
|
|
# 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' }}
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
lint:
|
|
name: Harness files pass lint
|
|
# 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: Run linter tests
|
|
run: python3 scripts/lint-harness-files.test.py
|
|
|
|
- name: Lint harness files
|
|
run: python3 .github/scripts/lint-harness-files.py --all
|
|
|
|
- name: Test documentation catalog
|
|
run: python3 scripts/list-docs.test.py
|
|
|
|
- name: Validate documentation catalog
|
|
run: python3 scripts/list-docs.py validate
|
|
|
|
- name: Test specification linter
|
|
run: python3 scripts/lint-spec-files.test.py
|
|
|
|
- name: Lint specifications
|
|
run: python3 scripts/lint-spec-files.py --all
|
|
|
|
- name: Test plugin API claim guard
|
|
run: node --test scripts/validate-plugin-api-claims.test.mjs
|
|
|
|
- name: Validate plugin API claims
|
|
run: node scripts/validate-plugin-api-claims.mjs
|