Github Appでrenovateを実行する方法はこちらの記事で試してみたが、
Github Actionsで実行する方法を試してみる。
今回の到達点
「最低限、Github Actionsからrenovateを実行する」
好ましい設定は色々あると思うが、今回はあくまで最低限の動作ができるところまで進めたい。
設定
Github Actions(Self-Hosted 環境)からrenovateを動作させるための設定は、
主に2種類に分けられる。
Global Option
その名の通り、renovateが対象とする全リポジトリに適用される共通の設定。
renovateのインスタンス全体に影響を与えます。
以下のいずれかの方法で設定する
- config file(ex:config.js)
- 環境変数(ex:Github Actionsでのアクション実行時に
RENOVATE_***
で渡す) - CLI parameters
詳細な設定方法&設定一覧はこちらに
Self-Hosted configuration options
※ Global Optionの設定項目を、Repository の設定ファイル内に書くと、読み込まれない or エラーになる。 Global Optionは、上述のいずれかの方法で必ず設定する。
Repository Option
その名の通り、個々のリポジトリに適用される設定。
リポジトリごとに異なる設定を適用する必要がある場合、このタイプの設定を使用。
リポジトリ内の設定ファイル(ex:.github/renovate.json)記述する。
詳細な設定方法&設定一覧はこちらに
ただ、
今回はGithub Actionsでrenovateさせるまで達成できれば良いので、
renovateにより用意されている設定のPresetを使用する。
公式の「Upgrade best practices」にも記載のある通り、
Preset の「config:best-practices」を使用することがbest practiceとして紹介されているので、
基本的にはこちらを採用する。
手順
手順は公式のREADMEを参照した。
上記記載の通り、以下手順で進める。
- renovate 実行用のGithub Actions workflowファイルを作成
- 「1.」のworkflow実行に必要なPAT(Personal Access Token)を作成
1. renovate 実行に必要なファイルを作成
以下のファイルが最低限必要。
1)renovate実行用のGithub actionsのworkflowファイル
2)renovateの設定ファイル
それぞれ作成する。
1)renovate実行用のGithub actionsのworkflowファイル
以下の通り作成。
name: Renovate
on:
workflow_dispatch:
jobs:
renovate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Self-hosted Renovate
uses: renovatebot/github-action@v40.0.3
with:
token: ${{ secrets.RENOVATE_TOKEN }}
env:
LOG_LEVEL: 'debug'
RENOVATE_REPOSITORIES: 'kokiwaku/test-renovate-github-actions'
RENOVATE_USERNAME: 'renovate[bot]'
RENOVATE_PLATFORM: 'github'
ほぼ公式通りで、基本的な流れとしては以下の通り
- uses: actions/checkout@v4.1.1:ブランチをチェックアウト
- uses: renovatebot/github-action@v40.0.3:renovateを実行
on: workflow_dispatch:
デバック用にとりあえず手動実行できるように設定。
token: ${{ secrets.RENOVATE_TOKEN }}
actions実行用にtokenの付与が必須なので、埋め込む記述。
tokenの発行手順自体は後述。
LOG_LEVEL: 'debug'
デバック用にDEBUGレベルのログも吐くようにする。
RENOVATE_REPOSITORIES: 'kokiwaku/test-renovate-github-actions'
RENOVATE_USERNAME: 'renovate[bot]'
RENOVATE_PLATFORM: 'github'
「設定」に記載したが、
これらの設定値はGlobal Configの設定値であり、repository config(renovate.json 等)には書けないため、
環境変数として渡す。
2)renovateの設定ファイル
以下の通り作成。
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:best-practices"
],
"branchPrefix": "renovate/",
"gitAuthor": "Renovate Bot <bot@renovateapp.com>",
"labels": [
"renovate"
]
}
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
これを書くと、vs codeで補完が効くようになる。
config:best-practices
「設定」で記載したように、公式が提供しているのbest-practiceのPresetをextendsする(読み込む)。
branchPrefix、gitAuthor、label
この辺りは、renovateが作成するpull requestに関する設定。
pull requestのbranch名のprefix・label、commitのauthorを設定している。
「1.」のworkflow実行に必要なPAT(Personal Access Token)を作成
Github Actions実行時には、actionに権限を付与するためGITHUB_TOKEN
がよく使われるが、こちらは権限が絞られている。
GITHUB_TOKEN
で権限が足りないケース等においては、代わりPATやGithub App tokenが使用されます。
今回はPATを使ってみます。
公式のこちらの記述によると
Generate a Personal Access Token (classic), with the
引用元:renovatebot/github-actionsrepo:public_repo
scope for only public repositories or therepo
scope for public and private repositories, and add it to Secrets (repository settings) asRENOVATE_TOKEN
. You can also create a token without a specific scope, which gives read-only access to public repositories, for testing. This token is only used by Renovate, see the token configuration, and gives it access to the repositories. The name of the secret can be anything as long as it matches the argument given to thetoken
option.
public repositoryを対象とする場合、repo:public_repo
の権限のみ設定すれば良さそうです。
tokenを作成します。
https://github.com/settings/tokens
1)Github > setting > Developer setting > Personal access tokens > Tokens (classic) からtoken生成
2)「1)」のtokenの値を、Repository > Settings > Secrets and variables から登録。
NAMEは、先ほとworkflowファイルで指定したRENOVATE_TOKEN
を設定します。
最低限の設定は以上。
動作確認
Github > 対象Repository > Actionsタブから、
renovateのworkflowを選択して、手動でworkflowを実行。
問題なく完了。
作成されたIssueを見てみる
Rate-Limited :
今回のrenovateの実行により、ここに記載のあるものも含めて、合計4つのpull requestが作成されようとしたようですが、
Rate-Limiteにかかり、その内2つのみ作成されたようです。
repository config > prhourlylimit(1時間辺りのpull requestの作成上限個数)デフォルトの設定値が2
であるため、
そのような挙動となった模様。
Other Branches:
今回のrenovate実行によるpull requestの作成がpendingされたブランチ郡。
詳細は追えていないですが、今回extendsしたconfig:best-practices
で読み込まれている設定の影響で、
pull requestを作成する条件を満たさなかったものたち、と言うことでしょう。
Open:
今回のrenovate実行により作成されたpull requestが載っています。
Detected dependencies:
現在のrenovateの設定により、追跡しているpakcage managerの一覧が記載されています。
repository configでは、依存性を管理したいpakcage managerは指定していないので、
おそらく、これも今回extendsしたconfig:best-practices
で読み込まれている設定の影響で、勝手に追跡してくれていると言うことでしょう。
作成されたpull requestを見てみる
問題なくpull request作成されています。
Configuration 記載の通り、
Schedule・Auto mergeの設定辺りの設定は、extends > config:best-practices
しても自動的に設定されるわけではないようです。
今後はこの辺りの設定を詰めて、
ある程度依存性の更新を自動化していきたいですね。
まとめ
適切な設定は追々検討するとして、
ひとまずGithub Actionsでrenovateを実行することができました。
今後発展させていくための下地はできた、と言う事で、
徐々により良い設定を探していきたい。
参考
https://zenn.dev/shunsuke_suzuki/articles/renovate-auto-merge-github-actions
https://blog.studysapuri.jp/entry/2020/12/10/080000
https://suzuki-shunsuke.github.io/guide-github-action-renovate/guide
https://zenn.dev/tmknom/articles/github-apps-token
https://shogo82148.github.io/blog/2023/09/26/2023-09-26-actions-github-app-token/
https://kakehashi-dev.hatenablog.com/entry/2022/12/10/000000
コメント