Read this in other languages: English, 日本語.
npmパッケージ公開前にパッケージのバージョンをチェックするGitHub Actions
です。
Table of Contents
例:.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@v1
with:
fetch-depth: 3
# Use this GitHub Action
- name: Check package version
uses: technote-space/package-version-check-action@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: release/
例:.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@master
with:
fetch-depth: 3
# Use this GitHub Action
- name: Check package version
uses: technote-space/package-version-check-action@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install Package dependencies
run: yarn install
- name: Build
run: yarn build
- name: Publish
uses: actions/npm@master
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
with:
args: publish
ブランチプリフィックス
default: ''
例:release/
コミットが無効かどうか
default: ''
パッケージバージョン更新用コミットのメッセージ
default: 'feat: Update package version'
パッケージファイル名
default: 'package.json'
パッケージファイルが置かれたディレクトリ
default: ''
テスト用タグのプリフィックス
default: ''
例:'test/'
eventName: action | condition |
---|---|
push: * | condition1 |
release: published | condition1 |
release: rerequested | condition1 |
created: * | condition2 |
- tags
- semantic versioning tag (例:
v1.2.3
)
- semantic versioning tag (例:
- branches
${BRANCH_PREFIX}${tag}
- tag: semantic versioning tag (例:
v1.2.3
) - 例:branch:
release/v1.2.3
- tag: semantic versioning tag (例:
- tags
- semantic versioning tag (例:
v1.2.3
)
- semantic versioning tag (例:
package.jsonバージョンの更新を忘れると、npmパッケージの公開は失敗します。
タグのプッシュでアクションを起動していた場合、
- プッシュしたタグを削除
- package.json のバージョンを更新
- コミットして再度タグを付与
- プッシュ
を再度行う必要があり、非常に面倒です。
この GitHub Action
は、タグ名に基づいてpackage.jsonのバージョンを自動的に更新します。
したがって、package.json のバージョンについて心配する必要はありません。
また、ブランチが保護されていない場合、このアクションは変更をコミットします。
ブランチが保護されている場合、このアクションは package.json のバージョンを更新するだけです。
コミットは『タグ付きのデフォルトブランチ(通常はmaster)』または『${BRANCH_PREFIX}
から始まるブランチ』へのプッシュ時のみ有効です。
GitHub Actions で提供されるGITHUB_TOKEN
は連続するイベントを作成する権限がありません。
したがって、プッシュによってトリガーされるビルドアクションなどは実行されません。
これはブランチプロテクションを設定していると問題になる場合があります。
もしアクションをトリガーしたい場合は代わりにpersonal access token
を使用してください。
- public_repo または repo の権限で Personal access token を生成
(repo はプライベートリポジトリで必要です) - ACCESS_TOKENとして保存
GITHUB_TOKEN
の代わりにACCESS_TOKEN
を使用
例:.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@v1 with: fetch-depth: 3 # Use this GitHub Action - name: Check package version uses: technote-space/package-version-check-action@v1 with: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} BRANCH_PREFIX: release/
タグ名は Semantic Versioning に従っている必要があります。