Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 67 additions & 67 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,67 +1,67 @@
name: CI

on:
push:
branches: [main]
pull_request:

# Least privilege: this workflow only needs to read the repo.
permissions:
contents: read

# Cancel superseded runs for the same ref to save CI minutes.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
check:
runs-on: ubuntu-latest
strategy:
# Test the oldest Node we claim to support (package.json engines)
# alongside current, so "works on my machine" can't hide an engines
# violation.
matrix:
node-version: [22, 24]
steps:
# Actions are pinned to commit SHAs (supply-chain hardening); the
# trailing comment records the human-readable version. v6 runs on the
# Node 24 action runtime, clearing the Node 20 deprecation warning.
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
# No step here pushes or calls the API; don't leave the token in
# .git/config for the rest of the job.
persist-credentials: false

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ matrix.node-version }}
cache: npm

- run: npm ci

- name: Validate manifest.json parses
run: node -e "JSON.parse(require('fs').readFileSync('manifest.json','utf8'))"

- run: npm run lint

- run: npm run format:check

- run: npm run typecheck

- run: npm run coverage

- run: npm run build

# Merge gate: branch protection requires a single status named "check".
# Reporting that name from an aggregate job (instead of the matrix legs,
# whose names carry the Node version) keeps the required-check name
# stable no matter how the matrix changes.
ci-ok:
name: check
needs: check
if: always()
runs-on: ubuntu-latest
steps:
- name: Fail unless every matrix leg succeeded
run: test "${{ needs.check.result }}" = "success"
name: CI
on:
push:
branches: [main]
pull_request:
# Least privilege: this workflow only needs to read the repo.
permissions:
contents: read
# Cancel superseded runs for the same ref to save CI minutes.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
check:
runs-on: ubuntu-latest
strategy:
# Test the oldest Node we claim to support (package.json engines)
# alongside current, so "works on my machine" can't hide an engines
# violation.
matrix:
node-version: [22, 24]
steps:
# Actions are pinned to commit SHAs (supply-chain hardening); the
# trailing comment records the human-readable version. v6 runs on the
# Node 24 action runtime, clearing the Node 20 deprecation warning.
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
# No step here pushes or calls the API; don't leave the token in
# .git/config for the rest of the job.
persist-credentials: false
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ matrix.node-version }}
cache: npm
- run: npm ci
- name: Validate manifest.json parses
run: node -e "JSON.parse(require('fs').readFileSync('manifest.json','utf8'))"
- run: npm run lint
- run: npm run format:check
- run: npm run typecheck
- run: npm run coverage
- run: npm run build
# Merge gate: branch protection requires a single status named "check".
# Reporting that name from an aggregate job (instead of the matrix legs,
# whose names carry the Node version) keeps the required-check name
# stable no matter how the matrix changes.
ci-ok:
name: check
needs: check
if: always()
runs-on: ubuntu-latest
steps:
- name: Fail unless every matrix leg succeeded
run: test "${{ needs.check.result }}" = "success"
82 changes: 41 additions & 41 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
name: CodeQL

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
# Weekly scan to catch advisories in code that hasn't changed.
- cron: "27 4 * * 1"

permissions:
contents: read

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
# Required for CodeQL to upload results to code scanning.
security-events: write
actions: read
contents: read
strategy:
fail-fast: false
matrix:
language: [javascript-typescript]
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Initialize CodeQL
uses: github/codeql-action/init@84498526a009a99c875e83ef4821a8ba52de7c22 # codeql-bundle-v2.25.5
with:
languages: ${{ matrix.language }}
# Static assets only; no compiled languages to build.
build-mode: none

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@84498526a009a99c875e83ef4821a8ba52de7c22 # codeql-bundle-v2.25.5
with:
category: "/language:${{ matrix.language }}"
name: CodeQL
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
# Weekly scan to catch advisories in code that hasn't changed.
- cron: "27 4 * * 1"
permissions:
contents: read
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
# Required for CodeQL to upload results to code scanning.
security-events: write
actions: read
contents: read
strategy:
fail-fast: false
matrix:
language: [javascript-typescript]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Initialize CodeQL
uses: github/codeql-action/init@84498526a009a99c875e83ef4821a8ba52de7c22 # codeql-bundle-v2.25.5
with:
languages: ${{ matrix.language }}
# Static assets only; no compiled languages to build.
build-mode: none
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@84498526a009a99c875e83ef4821a8ba52de7c22 # codeql-bundle-v2.25.5
with:
category: "/language:${{ matrix.language }}"
Loading
Loading