From c0c46ae41d6caec01b5a8f6df7b1e3bb63fa6ccb Mon Sep 17 00:00:00 2001 From: Szymon Chmal Date: Fri, 26 Jun 2026 12:11:07 +0200 Subject: [PATCH] chore: create GitHub release with generated notes Use GitHub-generated release notes and skip duplicate publish/release steps on reruns. --- .github/workflows/release.yml | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1eb6063..ed8e8c6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest environment: npm-publish permissions: - contents: read + contents: write id-token: write steps: - name: Check out repository @@ -83,5 +83,38 @@ jobs: - name: Inspect package contents run: npm pack --dry-run + - name: Check npm publication status + id: npm-publication + shell: bash + run: | + set -euo pipefail + + package_name="$(node -p "require('./package.json').name")" + version="$(node -p "require('./package.json').version")" + + if npm view "${package_name}@${version}" version >/dev/null 2>&1; then + echo "published=true" >> "${GITHUB_OUTPUT}" + echo "Package ${package_name}@${version} already published." + else + echo "published=false" >> "${GITHUB_OUTPUT}" + fi + - name: Publish to npm + if: steps.npm-publication.outputs.published != 'true' run: npm publish --access public + + - name: Create GitHub release + env: + GH_TOKEN: ${{ github.token }} + shell: bash + run: | + set -euo pipefail + + tag="${GITHUB_REF_NAME}" + + if gh release view "${tag}" >/dev/null 2>&1; then + echo "Release ${tag} already exists. Skipping." + exit 0 + fi + + gh release create "${tag}" --generate-notes --verify-tag