Skip to content

fix(ci): align Classic layout docs test with README scope #844

fix(ci): align Classic layout docs test with README scope

fix(ci): align Classic layout docs test with README scope #844

Workflow file for this run

name: CI
on:
push:
branches:
- master
- 'beta*'
- 'release/**'
- 'hotfix/**'
pull_request:
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
workflow-lint:
name: Workflow lint
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Validate GitHub Actions workflows
run: docker run --rm -v "$PWD:/repo" -w /repo rhysd/actionlint:1.7.7@sha256:887a259a5a534f3c4f36cb02dca341673c6089431057242cdc931e9f133147e9 -color
quality:
name: Quality and coverage
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
with:
version: '0.11.29'
- run: pnpm install --frozen-lockfile
- name: Verify generated runtimes are current
run: pnpm check:generated
- run: pnpm format:check
- run: pnpm lint
- run: pnpm build
- name: Verify build is deterministic
run: git diff --exit-code -- assets
- run: pnpm test:coverage
- name: Upload coverage report
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: coverage
path: coverage/
if-no-files-found: error
- name: Upload coverage to Codecov
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork == false
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage/lcov.info
flags: unittests
fail_ci_if_error: false
node-compatibility:
name: Node 22 compatibility
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.22.1
cache: pnpm
- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
with:
version: '0.11.29'
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm test
runtime-smoke:
name: Runtime smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm test:native-parallel
- run: pnpm test:runtime-smoke
package-e2e:
name: Package install (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm test:package-e2e
eval-static:
name: Eval static tests
runs-on: ubuntu-latest
timeout-minutes: 15
defaults:
run:
working-directory: eval
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
working-directory: .
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
with:
version: '0.11.29'
enable-cache: true
cache-dependency-glob: eval/uv.lock
- run: uv sync --locked --extra dev --extra langsmith
- run: uv run ruff check local/tests scaffold local/scripts langsmith
- run: uv run pytest -q local/tests/scaffold local/tests/tasks/test_validation_scripts.py
dashboard-e2e:
name: Dashboard browser E2E
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile --ignore-scripts
- run: pnpm build:dashboard
- run: pnpm exec playwright install --only-shell chromium
- run: pnpm test:dashboard-e2e
- name: Upload Playwright report
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: playwright-report
path: coverage/playwright-report/
if-no-files-found: ignore
ci-required:
name: CI required
if: always()
needs:
- workflow-lint
- quality
- node-compatibility
- runtime-smoke
- package-e2e
- eval-static
- dashboard-e2e
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Require every CI job to pass
env:
NEEDS_CONTEXT: ${{ toJson(needs) }}
run: |
node -e "const jobs=Object.values(JSON.parse(process.env.NEEDS_CONTEXT)); if(jobs.some(({result})=>result!=='success')) { console.error(jobs); process.exit(1); }"