ci: add CI (typecheck/test/build) and tag-triggered npm release workflows

This commit is contained in:
teamchong
2026-06-10 07:13:02 -04:00
parent e57cc07c1b
commit bb48aa4017
2 changed files with 64 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm run typecheck
- run: pnpm test
- run: pnpm run build
+41
View File
@@ -0,0 +1,41 @@
name: Release
on:
push:
tags: ['v*']
permissions:
contents: read
id-token: write # npm provenance / trusted publishing
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
registry-url: https://registry.npmjs.org
- run: pnpm install --frozen-lockfile
# Skip if this version is already on the registry (idempotent re-runs)
- name: Check version not already published
id: check
run: |
NAME=$(node -p "require('./package.json').name")
VERSION=$(node -p "require('./package.json').version")
if npm view "$NAME@$VERSION" version >/dev/null 2>&1; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "$NAME@$VERSION already published - skipping"
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi
# prepublishOnly runs typecheck + tests + build as the gate
- if: steps.check.outputs.skip == 'false'
run: npm publish --access public --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}