Skip to content

[ci] release

[ci] release #12397

Workflow file for this run

name: CI
on:
push:
branches: [main]
merge_group:
pull_request:
branches: [main]
# Automatically cancel in-progress actions on the same branch
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}
cancel-in-progress: true
env:
ASTRO_TELEMETRY_DISABLED: true
jobs:
changes:
runs-on: ubuntu-latest
permissions:
pull-requests: read
outputs:
docs: ${{ steps.filter.outputs.docs }}
docs_fa: ${{ steps.filter.outputs.docs_fa }}
docs_ja: ${{ steps.filter.outputs.docs_ja }}
docs_en: ${{ steps.filter.outputs.docs_en }}
docs_not_content: ${{ steps.filter.outputs.docs_not_content }}
packages: ${{ steps.filter.outputs.packages }}
ci: ${{ steps.filter.outputs.ci }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
id: filter
# When updating filters here, make sure to also add or remove them from the
# outputs block above.
with:
filters: |
docs:
- 'docs/**'
docs_fa:
- 'docs/src/content/docs/fa/**'
docs_ja:
- 'docs/src/content/docs/ja/**'
docs_en:
- 'docs/src/content/docs/**'
# Exclude languages with a two-letter code
- '!docs/src/content/docs/{a..z}{a..z}/**'
# Exclude languages with a region subtag
- '!docs/src/content/docs/{a..z}{a..z}-{a..z}{a..z}/**'
docs_not_content:
- 'docs/**'
- '!docs/src/content/docs/**'
packages:
- 'packages/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
ci:
- '.github/workflows/ci.yml'
unit-test:
name: Run unit tests
needs: changes
if: ${{ needs.changes.outputs.packages == 'true' || needs.changes.outputs.ci == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22.23.1
cache: 'pnpm'
- run: pnpm i
- name: Test packages
run: pnpm -r test:coverage
e2e-test:
name: 'Run E2E tests (${{ matrix.os }})'
needs: changes
if: ${{ needs.changes.outputs.packages == 'true' || needs.changes.outputs.ci == 'true' }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22.23.1
cache: 'pnpm'
- run: pnpm i --filter @astrojs/starlight --filter "@e2e/*"
- name: Test packages
run: pnpm -r test:e2e:ci
type-check:
name: Run type checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22.23.1
cache: 'pnpm'
- run: pnpm i
- name: Generate docs types
working-directory: docs
run: pnpm astro sync
- name: Type check packages
run: pnpm typecheck
lint:
name: Lint code
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22.23.1
cache: 'pnpm'
- run: pnpm i
- name: Generate types
working-directory: ./docs
run: pnpm astro sync
- name: Run linter
run: pnpm lint
a11y:
name: Check for accessibility issues
needs: changes
if: >
needs.changes.outputs.docs_not_content == 'true' ||
needs.changes.outputs.docs_fa == 'true' ||
needs.changes.outputs.docs_ja == 'true' ||
needs.changes.outputs.docs_en == 'true' ||
needs.changes.outputs.ci == 'true' ||
needs.changes.outputs.packages == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PNPM
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22.23.1
cache: 'pnpm'
- name: Install Dependencies
run: pnpm i
- name: Run accessibility audit
working-directory: ./docs
run: pnpm test:ci
windows-smoke:
name: Docs site builds on Windows
needs: changes
if: ${{ needs.changes.outputs.packages == 'true' || needs.changes.outputs.ci == 'true' || needs.changes.outputs.docs_not_content == 'true' }}
runs-on: windows-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22.23.1
cache: 'pnpm'
- run: pnpm i
- name: Build docs site
working-directory: ./docs
run: pnpm build
links:
name: Check for broken links
needs: changes
if: ${{ needs.changes.outputs.docs == 'true' || needs.changes.outputs.ci == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PNPM
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22.23.1
cache: 'pnpm'
- name: Install Dependencies
run: pnpm i
- name: Build docs site and check links
working-directory: ./docs
run: pnpm linkcheck