From 76a38c585e3d5f93f59d6ce53502eed7815abbbb Mon Sep 17 00:00:00 2001 From: Justin Trantham Date: Wed, 29 Jul 2026 19:36:18 -0500 Subject: [PATCH] fix(release): publish v3 directly instead of chaining workflows --- .github/workflows/release-v3.yml | 59 +++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-v3.yml b/.github/workflows/release-v3.yml index 692f8a1..67fa5d4 100644 --- a/.github/workflows/release-v3.yml +++ b/.github/workflows/release-v3.yml @@ -4,25 +4,68 @@ on: push: branches: [master] paths: - - package.json - - server.json - - src/config.ts - - CHANGELOG.md - .github/workflows/release-v3.yml + workflow_dispatch: permissions: contents: write jobs: - release: + release-and-publish: runs-on: ubuntu-latest + steps: - uses: actions/checkout@v4 - - name: Validate release version + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + registry-url: https://registry.npmjs.org + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Validate version alignment + run: | + PACKAGE_VERSION=$(node -p "require('./package.json').version") + SERVER_VERSION=$(node -p "require('./server.json').version") + CONFIG_VERSION=$(node -e "const fs=require('fs'); const s=fs.readFileSync('./src/config.ts','utf8'); const m=s.match(/export const SERVER_VERSION = \"([^\"]+)\";/); if(!m){process.exit(1)}; console.log(m[1]);") + + echo "package.json version: ${PACKAGE_VERSION}" + echo "server.json version: ${SERVER_VERSION}" + echo "src/config.ts version: ${CONFIG_VERSION}" + + test "${PACKAGE_VERSION}" = "3.0.0" + test "${PACKAGE_VERSION}" = "${SERVER_VERSION}" + test "${PACKAGE_VERSION}" = "${CONFIG_VERSION}" + + - name: Build + run: npm run build + + - name: Test + run: npm test + + - name: Check if version already exists on npm + id: npm_check run: | - VERSION=$(node -p "require('./package.json').version") - test "$VERSION" = "3.0.0" + PACKAGE_NAME=$(node -p "require('./package.json').name") + PACKAGE_VERSION=$(node -p "require('./package.json').version") + + if npm view "${PACKAGE_NAME}@${PACKAGE_VERSION}" version >/dev/null 2>&1; then + echo "already_published=true" >> "$GITHUB_OUTPUT" + echo "Version ${PACKAGE_VERSION} is already published." + else + echo "already_published=false" >> "$GITHUB_OUTPUT" + echo "Version ${PACKAGE_VERSION} is not published yet." + fi + + - name: Publish to npm + if: steps.npm_check.outputs.already_published == 'false' + run: npm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Create GitHub release env: