ci: add per-language GitHub Actions workflows #10
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | |
| --- | |
| name: TypeScript | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: ["*"] | |
| merge_group: | |
| types: [checks_requested] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: "typescript-${{ github.event.pull_request.number || github.sha }}" | |
| cancel-in-progress: true | |
| jobs: | |
| paths-filter: | |
| runs-on: depot-ubuntu-24.04-arm-small | |
| outputs: | |
| changed: ${{ steps.filter.outputs.changed }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590 # v3 | |
| id: filter | |
| with: | |
| filters: | | |
| changed: | |
| - '.github/workflows/typescript.yaml' | |
| - 'Magefile.go' | |
| - 'go.mod' | |
| - 'go.sum' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'pnpm-workspace.yaml' | |
| - 'proto-clients/spicedb-typescript-proto/**' | |
| - 'spicedb-typescript/**' | |
| lint: | |
| needs: paths-filter | |
| if: needs.paths-filter.outputs.changed == 'true' | |
| runs-on: depot-ubuntu-24.04-arm-4 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - name: Install mage | |
| run: go install github.com/magefile/mage@latest | |
| - name: Install deps | |
| run: pnpm install --frozen-lockfile | |
| - name: Build proto package | |
| run: pnpm --filter @spicedb/proto build | |
| - name: Lint | |
| run: mage -d spicedb-typescript lint | |
| unit: | |
| needs: paths-filter | |
| if: needs.paths-filter.outputs.changed == 'true' | |
| runs-on: depot-ubuntu-24.04-arm-4 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - name: Install mage | |
| run: go install github.com/magefile/mage@latest | |
| - name: Install deps | |
| run: pnpm install --frozen-lockfile | |
| - name: Build proto package | |
| run: pnpm --filter @spicedb/proto build | |
| - name: Proto client tests | |
| run: mage -d proto-clients/spicedb-typescript-proto test | |
| - name: Idiomatic client tests | |
| run: mage -d spicedb-typescript test | |
| integration: | |
| needs: paths-filter | |
| if: needs.paths-filter.outputs.changed == 'true' | |
| runs-on: depot-ubuntu-24.04-arm-4 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - name: Install mage | |
| run: go install github.com/magefile/mage@latest | |
| - name: Install deps | |
| run: pnpm install --frozen-lockfile | |
| - name: Build proto package | |
| run: pnpm --filter @spicedb/proto build | |
| - name: Integration test | |
| run: mage -d spicedb-typescript integrationTest | |
| apicompat: | |
| needs: paths-filter | |
| if: needs.paths-filter.outputs.changed == 'true' && github.event_name == 'pull_request' | |
| runs-on: depot-ubuntu-24.04-arm-small | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - name: Install mage | |
| run: go install github.com/magefile/mage@latest | |
| - name: Install deps | |
| run: pnpm install --frozen-lockfile | |
| - name: Build proto package | |
| run: pnpm --filter @spicedb/proto build | |
| - name: API compatibility check | |
| run: mage -d spicedb-typescript apiCompat origin/${{ github.base_ref }} |