概要
以前のブログポストではNPM
パッケージをデプロイする方法について見てみました。NPM
パッケージをデプロイする方法については下記のリンクを参考してください。
今回のブログポストではGitHub Actions
を使ってNPM
パッケージデプロイを自動化する方法について説明します。
- 公式ドキュメント: Publishing Node.js packages
NPM access token
GitHub Actions
を使ってNPM
パッケージデプロイを自動化するためにはNPM
のAccess token
が必要です。次のリンクを使ってNPM
サイトに移動した後、ログインします。
ログインした後、右上のプロフィールイメージを選択してAccess Tokens
を押してAccess Tokens
ページに移動します。
Access Tokens
ページで右上のGenerate New Token
> Classic Token
ボタンを押して新しいトークンを生成するページに移動します。
New Access Token
ページでAutomation
を選択して、Name
を入力して新しいトークンを生成します。私はFor GitHub
と言う名前で新しいトークンを生成しました。
新しいトークンが生成されたらトークンをコピーできる画面が出ます。そのトークンをGitHub Actions
で使う予定なのでコピーしておきます。
GitHub Actions variables
GitHub Actions
でNPM
パッケージのデプロイ自動化をしたいレポジトリ(Repository)に移動した後、Settings
> Secrets and variables
> Actions
メニューを選択すると次のような画面が確認できます。
ここで右上のNew repository secret
ボタンを押すと次のような画面が確認できます。
Name
ではNPM_TOKEN
を入力してSecret
は前でNPM
サイトでコピーしたAccess token
を入力します。
GitHub Actions
次はGit tag
でNPM
パッケージを自動でデプロイするGitHub Actions
を作ってみましょう。.github/workflows/release.yml
ファイルを作って次のように修正します。
name: Release
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
jobs:
release:
permissions:
contents: write
pull-requests: write
id-token: write
runs-on: ubuntu-latest
steps:
- name: Get semantic version
id: semver
run: echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
- uses: actions/checkout@v4
with:
ref: v${{ steps.semver.outputs.version }}
- uses: actions/[email protected]
with:
node-version: '20.3.0'
registry-url: 'https://registry.npmjs.org'
- name: Update package version
run: npm version ${{ steps.semver.outputs.version }} --no-git-tag-version
- name: Commit updated package version
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'chore: Update package version'
branch: main
- name: Update Git tag
run: |
git tag ${{ github.ref_name }} -f
git push origin ${{ github.ref_name }} -f
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
もっと詳しくこのGitHub Actions
を説明します。
このGitHub Actions
はセマンティックバージョン(Semantic Version)のGit tag
で動作します。
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
セマンティックバージョンでv
文字を軽したバージョンをGitHub Actions
で使えるように変数に保存しました。
- name: Get semantic version
id: semver
run: echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
セマンティックバージョンのGit tag
でコードを持ってきます。
- uses: actions/checkout@v4
with:
ref: v${{ steps.semver.outputs.version }}
NPM
デプロイのためNode
をインストールします。
- uses: actions/[email protected]
with:
node-version: '20.3.0'
registry-url: 'https://registry.npmjs.org'
package.json
ファイル中のversion
を現在Git tag
バージョンでアップデートします。
- name: Update package version
run: npm version ${{ steps.semver.outputs.version }} --no-git-tag-version
このようにアップデートしたバージョンをGit
で管理するためcommit & push
をします。
- name: Commit updated package version
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'chore: Update package version'
branch: main
このようにアップデートしたソースコードを最終コードとして使うためGit tag
を強制的に変更します。
- name: Update Git tag
run: |
git tag ${{ github.ref_name }} -f
git push origin ${{ github.ref_name }} -f
NPM
のAccess token
を使って現在パッケージをNPM
にデプロイします。
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
デプロイ
このように完成したGitHub Actions
を使ってNPM
パッケージを自動でデプロイしてみましょう。次のコマンドを使うとGitHub Actions
を使ってNPM
パッケージを自動でデプロイすることができます。
git tag v0.1.0
git push origin v0.1.0
GitHub Actions
で自動でデプロイされた後、NPM
サイトに移動すると次のようにパッケージがうまくデプロイされたことが確認できます。
完了
これで自分で開発した JavaScript ライブラリをGitHub Actions
を使ってに自動でデプロイする方法について見てみました。もし、皆さんもNPM
にパッケージをデプロイして管理してる場合、GitHub Actions
を使ってNPM
パッケージデプロイを自動化して見てください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。