name: Publish package on: push: tags: - 'v*' jobs: publish: runs-on: ubuntu-latest env: PACKAGE_REGISTRY: https://git.warky.dev/api/packages/${{ gitea.repository_owner }}/npm/ steps: - uses: https://github.com/actions/checkout@v4 - uses: https://github.com/pnpm/action-setup@v4 - uses: https://github.com/actions/setup-node@v4 with: node-version: 22 registry-url: https://git.warky.dev/api/packages/${{ gitea.repository_owner }}/npm/ scope: '@warkypublic' cache: pnpm - name: Verify release tag env: RELEASE_REF: ${{ gitea.ref }} run: | node --input-type=module <<'JS' import { readFileSync } from 'node:fs'; const { version } = JSON.parse(readFileSync('package.json', 'utf8')); if (process.env.RELEASE_REF !== `refs/tags/v${version}`) { throw new Error(`Release tag must be v${version} to match package.json`); } JS - run: pnpm install --frozen-lockfile - run: pnpm test - run: pnpm check:bundle - name: Publish to Gitea Packages env: # npm uses token authentication; PACKAGE_REGISTRY_USERNAME is not required. NODE_AUTH_TOKEN: ${{ secrets.PACKAGE_REGISTRY_TOKEN }} run: | set -eu : "${NODE_AUTH_TOKEN:?Set the PACKAGE_REGISTRY_TOKEN Actions secret with package write access}" version=$(node -p "require('./package.json').version") case "$version" in *-*) dist_tag=next ;; *) dist_tag=latest ;; esac pnpm publish --no-git-checks --registry "$PACKAGE_REGISTRY" --tag "$dist_tag"