name: Consistency # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: ["main"] pull_request: branches: ["main"] merge_group: workflow_dispatch: {} permissions: contents: read # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: check-changes: name: Check Changes runs-on: ubuntu-latest if: | github.event_name == 'pull_request' && !startsWith(github.head_ref, 'publish/') && !startsWith(github.head_ref, 'dependabot/') && !startsWith(github.head_ref, 'backmerge/') && !startsWith(github.head_ref, 'revert-') steps: - uses: actions/checkout@v6 with: fetch-depth: 0 ## Needed for Changesets to find `main` branch - uses: ./.github/actions/setup - run: git fetch --force --no-tags origin ${{ github.event.pull_request.base.ref }}:${{ github.event.pull_request.base.ref }} name: Get ${{ github.event.pull_request.base.ref }} ref for ${{ github.ref}}, evt ${{ github.event_name }} - run: pnpm install name: Install dependencies - name: Create PR Comment run: pnpm chronus-github get-pr-comment --out ./comment-out/comment.json env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - uses: actions/upload-artifact@v7 with: name: comment path: comment-out/ retention-days: 1 # Only need for the next workflow so don't need to waste storageretention-days - run: pnpm chronus verify --since ${{ github.event.pull_request.base.ref }} name: Check changelog # Validate spell check spellcheck: name: Spell check runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: submodules: recursive - uses: ./.github/actions/setup - run: pnpm install name: Install dependencies - run: pnpm run cspell name: Spell check # Validate formatting format: name: Format runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: submodules: recursive - uses: ./.github/actions/setup - run: pnpm install name: Install dependencies - run: pnpm --filter="@typespec/prettier-plugin-typespec..." run build name: Build prettier plugin - run: pnpm run format:check name: Check formatting # Lint lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: submodules: recursive - uses: ./.github/actions/setup - run: pnpm install name: Install dependencies - run: pnpm --filter="@typespec/eslint-plugin..." run build name: Build prettier plugin - run: pnpm run lint name: Lint # cspell:ignore rhysd # Content copied from https://raw.githubusercontent.com/rhysd/actionlint/2ab3a12c7848f6c15faca9a92612ef4261d0e370/.github/actionlint-matcher.json - run: echo "::add-matcher::.github/matchers/actionlint.json" name: Add actionlint problem matcher - uses: docker://rhysd/actionlint:1.7.12 name: Lint workflows with: args: -color -verbose # Check that all dependencies use the pnpm catalog version-consistency: name: Versions consistency runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: submodules: recursive - uses: ./.github/actions/setup - run: pnpm install name: Install dependencies - run: pnpm run check-catalog name: Check catalog usage