Skip to content

Latest commit

 

History

History
251 lines (209 loc) · 10.9 KB

README.ja.md

File metadata and controls

251 lines (209 loc) · 10.9 KB

Package Version Check Action

CI Status codecov CodeFactor License: MIT

Read this in other languages: English, 日本語.

npmパッケージ公開前にパッケージのバージョンをチェックするGitHub Actionsです。

Table of Contents

Details

スクリーンショット

  1. GitHub Action 実行中

    Running

  2. package.json のバージョンを更新 (ブランチが保護されていない場合)

    Updated

使用方法

プッシュ時に使用

例:.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/

リリースプロセスで使用

例:.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_PREFIX

ブランチプリフィックス
default: ''
例:release/

COMMIT_DISABLED

コミットが無効かどうか
default: ''

COMMIT_MESSAGE

パッケージバージョン更新用コミットのメッセージ
default: 'feat: update package version'

PACKAGE_NAME

パッケージファイル名
default: 'package.json'

PACKAGE_DIR

パッケージファイルが置かれたディレクトリ
default: ''

TEST_TAG_PREFIX

テスト用タグのプリフィックス
default: ''
例:'test/'

NEXT_VERSION

次のバージョンを指定
default: ''
e.g. 'v1.2.3'

Action イベント詳細

対象イベント

eventName: action condition
push: * condition1
release: published condition1
pull_request, pull_request_target: opened, reopened, synchronize condition2
created: * condition3

Conditions

condition1

  • tags
    • semantic versioning tag (例:v1.2.3)
  • branches
    • ${BRANCH_PREFIX}${tag}
      • tag: semantic versioning tag (例:v1.2.3)
      • 例:branch: release/v1.2.3

condition2

  • branches
    • ${BRANCH_PREFIX}${tag}
      • tag: semantic versioning tag (例:v1.2.3)
      • 例:branch: release/v1.2.3

condition3

  • tags
    • semantic versioning tag (例:v1.2.3)

動機

package.jsonバージョンの更新を忘れると、npmパッケージの公開は失敗します。

Failed

タグのプッシュでアクションを起動していた場合、

  1. プッシュしたタグを削除
  2. package.json のバージョンを更新
  3. コミットして再度タグを付与
  4. プッシュ

を再度行う必要があり、非常に面倒です。

この GitHub Action は、タグ名に基づいてpackage.jsonのバージョンを自動的に更新します。
したがって、package.json のバージョンについて心配する必要はありません。

また、ブランチが保護されていない場合、このアクションは変更をコミットします。
ブランチが保護されている場合、このアクションは package.json のバージョンを更新するだけです。

補足

コミット

コミットは『タグ付きのデフォルトブランチ(通常はmaster)』または『${BRANCH_PREFIX}から始まるブランチ』へのプッシュ時のみ有効です。

GitHub Actions で提供されるGITHUB_TOKENは連続するイベントを作成する権限がありません。
したがって、プッシュによってトリガーされるビルドアクションなどは実行されません。

GITHUB_TOKEN

これはブランチプロテクションを設定していると問題になる場合があります。

もしアクションをトリガーしたい場合は代わりにpersonal access tokenを使用してください。

  1. public_repo または repo の権限で Personal access token を生成
    (repo はプライベートリポジトリで必要です)
  2. ACCESS_TOKENとして保存
  3. 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@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/

ACCESS_TOKEN

Tags

タグ名は Semantic Versioning に従っている必要があります。

このアクションを使用しているリポジトリの例

Author

GitHub (Technote)
Blog