From fca04856a890bf6e625a593d0f7035bd31e7a52a Mon Sep 17 00:00:00 2001 From: Ismo Vuorinen Date: Tue, 30 Sep 2025 23:18:56 +0300 Subject: [PATCH] chore: fixes to release workflow and release shortcuts --- .github/workflows/release.yml | 44 ++++++++++++++++++++++++++++++++--- package.json | 5 +++- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a7d078c..dba34e2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,6 @@ name: Release on: - release: - types: [published] push: tags: - 'v*.*.*' @@ -86,10 +84,33 @@ jobs: name: dist path: dist/ + create-release: + name: Create GitHub Release + runs-on: ubuntu-latest + needs: [lint, test, build] + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + + - name: Download build artifacts + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + with: + name: dist + path: dist/ + + - name: Create GitHub Release + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.2.0 + with: + generate_release_notes: true + files: | + dist/**/* + publish: name: Publish to npm runs-on: ubuntu-latest - needs: [lint, test, build] + needs: [lint, test, build, create-release] permissions: contents: read id-token: write @@ -110,7 +131,24 @@ jobs: - name: Build project run: npm run build + - name: Check if version exists on npm + id: check-version + run: | + PACKAGE_VERSION=$(node -p "require('./package.json').version") + PACKAGE_NAME=$(node -p "require('./package.json').name") + echo "version=$PACKAGE_VERSION" >> $GITHUB_OUTPUT + echo "name=$PACKAGE_NAME" >> $GITHUB_OUTPUT + + if npm view "$PACKAGE_NAME@$PACKAGE_VERSION" version 2>/dev/null; then + echo "exists=true" >> $GITHUB_OUTPUT + echo "⚠️ Version $PACKAGE_VERSION already exists on npm, skipping publish" + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "✅ Version $PACKAGE_VERSION does not exist on npm, will publish" + fi + - name: Publish to npm + if: steps.check-version.outputs.exists == 'false' run: npm publish --provenance --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index bc1b613..07ca6df 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,10 @@ "lint": "biome check src/", "lint:fix": "biome check --write .", "format": "biome format --write .", - "prepare": "husky" + "prepare": "husky", + "release:patch": "npm version patch -m 'chore: release v%s' && git push origin main --follow-tags", + "release:minor": "npm version minor -m 'chore: release v%s' && git push origin main --follow-tags", + "release:major": "npm version major -m 'chore: release v%s' && git push origin main --follow-tags" }, "dependencies": { "@types/yargs": "^17.0.33",