name: Release Canary on: push: branches: - master concurrency: group: release-canary-master cancel-in-progress: false jobs: verify: runs-on: ubuntu-latest timeout-minutes: 30 permissions: contents: read steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 9.15.4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 cache: pnpm - name: Install dependencies run: pnpm install --no-frozen-lockfile - name: Typecheck run: pnpm -r typecheck - name: Run tests run: pnpm test:run - name: Build run: pnpm build publish: needs: verify runs-on: ubuntu-latest timeout-minutes: 45 environment: npm-canary permissions: contents: write id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 9.15.4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 cache: pnpm - name: Install dependencies run: pnpm install --no-frozen-lockfile - name: Configure git author run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - name: Publish canary env: GITHUB_ACTIONS: "true" run: ./scripts/release.sh canary --skip-verify - name: Push canary tag run: | tag="$(git tag --points-at HEAD | grep '^canary/v' | head -1)" if [ -z "$tag" ]; then echo "Error: no canary tag points at HEAD after release." >&2 exit 1 fi git push origin "refs/tags/${tag}"