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に寄せると知識を自分の中で保存する必要がなくなるのでよいですね。