1name: Publish to JSR23on:4 push:5 tags:6 - "v[0-9]+.[0-9]+.[0-9]+"78jobs:9 publish:10 runs-on: ubuntu-latest11 permissions:12 contents: write # create the GitHub Release after JSR publication succeeds13 id-token: write # required for JSR OIDC auth + provenance14 steps:15 - uses: actions/checkout@v616 - uses: denoland/setup-deno@v217 with:18 deno-version: v2.x19 - uses: actions/setup-node@v620 with:21 node-version: 2422 cache: npm23 cache-dependency-path: |24 package-lock.json25 worker/package-lock.json26 - name: Install root tooling27 run: npm ci28 - name: Install Worker tooling29 working-directory: worker30 run: npm ci31 - name: Check, lint, and test Deno workspace32 run: |33 deno task fmt:check34 deno task lint35 deno task doc36 deno task check37 deno task test38 deno publish --dry-run39 - name: Check and test Worker40 working-directory: worker41 run: |42 npm run check43 npm test44 npx wrangler deploy --dry-run45 - name: Publish workspace46 run: deno publish47 - name: Create GitHub Release48 env:49 GH_TOKEN: ${{ github.token }}50 run: |51 if gh release view "$GITHUB_REF_NAME" >/dev/null 2>&1; then52 echo "GitHub Release $GITHUB_REF_NAME already exists"53 else54 gh release create "$GITHUB_REF_NAME" \55 --verify-tag \56 --title "nzip $GITHUB_REF_NAME" \57 --generate-notes58 fi