Skip to content

Add local XCM Chopsticks orchestration #8

Add local XCM Chopsticks orchestration

Add local XCM Chopsticks orchestration #8

Workflow file for this run

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"