Read this in other languages: English, 日本語.
This is a GitHub Actions
to check package version before publish npm.
Details
e.g. .github/workflows/check_version.yml
on: push
name: Check package version
jobs:
checkVersion:
name: Check package version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Use this GitHub Action
- name: Check package version
uses: technote-space/package-version-check-action@v1
with:
BRANCH_PREFIX: release/
e.g. .github/workflows/release.yml
on:
push:
tags:
- 'v*'
name: Publish Package
jobs:
release:
name: Publish Package
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# Use this GitHub Action
- name: Check package version
uses: technote-space/package-version-check-action@v1
with:
COMMIT_DISABLED: 1
- name: Install Package dependencies
run: yarn install
- name: Build
run: yarn build
- name: Publish
run: |
npm config set //registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN
npm publish
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
Branch name prefix.
default: ''
e.g. release/
Whether commit is disabled.
default: ''
Commit message of update package version commit.
default: 'feat: update package version'
Package file name.
default: 'package.json'
Package directory.
default: ''
Prefix for test tag.
default: ''
e.g. 'test/'
Specify next version.
default: ''
e.g. 'v1.2.3'
eventName: action | condition |
---|---|
push: * | condition1 |
release: published | condition1 |
pull_request, pull_request_target: opened, reopened, synchronize | condition2 |
created: * | condition3 |
- tags
- semantic versioning tag (e.g.
v1.2.3
)
- semantic versioning tag (e.g.
- branches
${BRANCH_PREFIX}${tag}
- tag: semantic versioning tag (e.g.
v1.2.3
) - e.g. branch:
release/v1.2.3
- tag: semantic versioning tag (e.g.
- branches
${BRANCH_PREFIX}${tag}
- tag: semantic versioning tag (e.g.
v1.2.3
) - e.g. branch:
release/v1.2.3
- tag: semantic versioning tag (e.g.
- tags
- semantic versioning tag (e.g.
v1.2.3
)
- semantic versioning tag (e.g.
If you forget to update the package.json version, publishing the npm package will fail.
If you are invoking an action by pushing a tag, you have to do following steps again.
- Delete pushed tag
- Update package.json version
- Commit and tag again
- Push
This is very troublesome.
This GitHub Action
updates the version in package.json based on the tag name automatically.
So you don't have to worry about the version in package.json.
This action also commits the change if the branch is not protected.
If the branch is protected, this action just update the version in package.json.
Commit is valid when pushing to default branch with tag
or branch starting with ${BRANCH_PREFIX}
.
The GITHUB_TOKEN
that is provided as a part of GitHub Actions
doesn't have authorization to create any successive events.
So it won't spawn actions which triggered by push.
This can be a problem if you have branch protection configured.
If you want to trigger actions, use a personal access token instead.
- Generate a personal access token with the public_repo or repo scope.
(repo is required for private repositories). - Save as ACCESS_TOKEN
- Add input to use
ACCESS_TOKEN
instead ofGITHUB_TOKEN
.
e.g..github/workflows/check_version.yml
on: push name: Check package version jobs: checkVersion: name: Check package version runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # Use this GitHub Action - name: Check package version uses: technote-space/package-version-check-action@v1 with: GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} BRANCH_PREFIX: release/
Tag name format must be Semantic Versioning.