Add local XCM Chopsticks orchestration #8
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
| name: CI | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| env: | |
| PNPM_VERSION: 9.0.0 | |
| NPM_CONFIG_AUDIT: "false" | |
| NPM_CONFIG_FUND: "false" | |
| jobs: | |
| quality: | |
| name: Quality Gates (Node ${{ matrix.node-version }}) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node-version: | |
| - 20.x | |
| - 22.x | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: ${{ env.PNPM_VERSION }} | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: pnpm | |
| cache-dependency-path: pnpm-lock.yaml | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Lint and complexity gates | |
| run: pnpm lint | |
| - name: Typecheck | |
| run: pnpm typecheck | |
| - name: Unit tests | |
| run: pnpm test | |
| - name: Dependency boundaries | |
| run: pnpm depcheck | |
| - name: Build | |
| run: pnpm build | |
| coverage: | |
| name: Coverage Threshold | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: ${{ env.PNPM_VERSION }} | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20.x | |
| cache: pnpm | |
| cache-dependency-path: pnpm-lock.yaml | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Check coverage threshold | |
| run: pnpm coverage | |
| workflow-lint: | |
| name: Workflow Lint | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Install actionlint | |
| env: | |
| GOBIN: ${{ runner.temp }}/actionlint-bin | |
| run: | | |
| go install github.com/rhysd/actionlint/cmd/actionlint@v1.7.12 | |
| echo "${GOBIN}" >> "$GITHUB_PATH" | |
| - name: Lint GitHub Actions workflows | |
| run: actionlint .github/workflows/*.yml | |
| ci-success: | |
| name: CI Success | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| if: ${{ always() }} | |
| needs: | |
| - quality | |
| - coverage | |
| - workflow-lint | |
| env: | |
| QUALITY: ${{ needs.quality.result }} | |
| COVERAGE: ${{ needs.coverage.result }} | |
| WORKFLOW_LINT: ${{ needs.workflow-lint.result }} | |
| steps: | |
| - name: Check required CI jobs | |
| run: | | |
| set -euo pipefail | |
| failed=0 | |
| for item in \ | |
| "quality=${QUALITY}" \ | |
| "coverage=${COVERAGE}" \ | |
| "workflow-lint=${WORKFLOW_LINT}" | |
| do | |
| name="${item%%=*}" | |
| result="${item#*=}" | |
| echo "$name: $result" | |
| if [ "$result" != "success" ]; then | |
| failed=1 | |
| fi | |
| done | |
| exit "$failed" |