きり丸の技術日記

技術検証したり、資格等をここに残していきます。

【GitHub Actions】npmのpackage.jsonをアップデートするPull Requestを作成する

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でやりたかったので、シェル操作を組み合わせました。

処理の流れは次のとおりです。

  1. npm-check-updatesでpackage.jsonを一括更新する
  2. ブランチを分岐させ、コミットする
  3. 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に寄せると知識を自分の中で保存する必要がなくなるのでよいですね。

参考情報