v3.1.0 #1
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish to npm | |
| # Publishes the package to npm whenever a GitHub Release is published. | |
| # It publishes the exact commit the release tag points to, so a pre-release | |
| # can be cut from any branch (e.g. a beta off `dev`) without that branch | |
| # having to be merged into master first. | |
| # | |
| # The release tag is the source of truth for the version: | |
| # - Stable tag (e.g. v1.2.3) -> published to the "latest" | |
| # dist-tag; the version bump is | |
| # committed back to master. | |
| # - Pre-release tag (e.g. v1.2.3-beta.1) -> published to a matching dist-tag | |
| # ("beta", "rc", ...); does NOT | |
| # become "latest" and is NOT | |
| # committed back to master. | |
| # | |
| # Authentication uses npm Trusted Publishing (OIDC) - no token or secret is | |
| # needed. Configure a trusted publisher for this package on npmjs.com: | |
| # Repository: skylord123/node-red-contrib-gamedig | |
| # Workflow: publish.yml | |
| on: | |
| release: | |
| types: [published] | |
| jobs: | |
| publish: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write # commit the version bump back to master | |
| id-token: write # npm Trusted Publishing (OIDC) + provenance | |
| steps: | |
| - name: Check out the released commit | |
| uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| registry-url: https://registry.npmjs.org | |
| - name: Update npm | |
| # Trusted Publishing requires npm 11.5.1 or newer; Node 22 ships npm 10. | |
| run: npm install -g npm@latest | |
| - name: Determine version and dist-tag | |
| id: ver | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| if [[ "$VERSION" == *-* ]]; then | |
| # pre-release, e.g. 1.0.0-beta.1 -> dist-tag "beta" | |
| DIST_TAG="${VERSION#*-}" | |
| DIST_TAG="${DIST_TAG%%.*}" | |
| PRERELEASE=true | |
| else | |
| DIST_TAG=latest | |
| PRERELEASE=false | |
| fi | |
| echo "version=$VERSION" >> "$GITHUB_OUTPUT" | |
| echo "dist_tag=$DIST_TAG" >> "$GITHUB_OUTPUT" | |
| echo "prerelease=$PRERELEASE" >> "$GITHUB_OUTPUT" | |
| echo "Publishing $VERSION to npm dist-tag '$DIST_TAG' (prerelease=$PRERELEASE)" | |
| - name: Set version | |
| run: npm version "${{ steps.ver.outputs.version }}" --no-git-tag-version --allow-same-version | |
| - name: Publish to npm | |
| run: npm publish --provenance --access public --tag "${{ steps.ver.outputs.dist_tag }}" | |
| - name: Commit version bump back to master | |
| if: steps.ver.outputs.prerelease == 'false' | |
| run: | | |
| if git diff --quiet; then | |
| echo "package.json already at ${{ steps.ver.outputs.version }}; nothing to commit." | |
| exit 0 | |
| fi | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git commit -am "Set version to ${{ steps.ver.outputs.version }}" | |
| git push origin HEAD:master \ | |
| || echo "::warning::Could not push the version bump to master (branch protection?). The package was still published." |