package.jsonのライブラリバージョンを、現在推奨されているバージョンまでアップデートする方法を探していました。そんなに多用するものではないので、GitHub Actionsでなんとかできないか探したのがこちらの記事です。
環境
- taichi/actions-package-update
- v0.5.0
- npm-check-updates
- 14.1.1
- GitHub Actions
- 2022/06/26時点
- npm
- 2022/06/26時点
対応
実行するトリガは手動実行する前提で考えています。1-2ヵ月ごとに最新化したい場合は適宜、onを修正してください。
taichi/actions-package-update
GitHub Maerkteplaceのtaichi/actions-package-updateを使用する場合は、公式にある使い方を確認してください。
1点気になっている点があるので、私は使用していませんが特に気にしなければオススメです。
name: Update Package.json
on: workflow_dispatch
jobs:
package-update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: setup
run: |
git remote set-url --push origin https://$GITHUB_ACTOR:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY
- name: package-update
uses: taichi/actions-package-update@master
env:
AUTHOR_EMAIL: "action@github.com"
AUTHOR_NAME: "github-actions[bot]"
EXECUTE: "true"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
LOG_LEVEL: debug
with:
args: -u --packageFile package.json --loglevel verbose
自作で組み合わせる
package.jsonのアップデートコミットをgithub-actions[bot]@users.noreply.github.comでやりたかったので、シェル操作を組み合わせました。
処理の流れは次のとおりです。
npm-check-updatesでpackage.jsonを一括更新する- ブランチを分岐させ、コミットする
- GitHub CLIでPull Requestを作成する
name: Update Package.json
on: workflow_dispatch
jobs:
package-update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: setup
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
npm install -g npm-check-updates
- name: version up
run: |
ncu -u
npm install # package-lock.jsonを更新したい
- name: commit
run: |
git switch -c update_package_json
git add .
git commit -m 'package.json update'
git push --set-upstream origin update_package_json
- name: create pull request
run: gh pr create -t "update package json" -b "update package json"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
備考
GitHub Actionsでコミットする設定値のユーザ名、メールアドレスは次の設定を使う人が多そうです。
ただ、GitHub公式として推奨しているわけではなく、内部的な処理で使用されているものをユーザが解析してみつけたものらしいので、問題があったら取り下げます。
| ユーザ名 | メードアドレス |
|---|---|
| github-actions[bot] | github-actions[bot]@users.noreply.github.com |
終わりに
毎回最新バージョンを確認してアップデートするのが面倒でしたが、CIで動くようになったので、個人的に非常に便利になりました。処理をCIに寄せると知識を自分の中で保存する必要がなくなるのでよいですね。