MENU

Renovateをgithub Actionsで実行してみる

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)記述する。

詳細な設定方法&設定一覧はこちらに

Configuration Options


ただ、

今回はGithub Actionsでrenovateさせるまで達成できれば良いので、

renovateにより用意されている設定のPresetを使用する。

Preset

公式の「Upgrade best practices」にも記載のある通り、

Preset の「config:best-practices」を使用することがbest practiceとして紹介されているので、

基本的にはこちらを採用する。

手順

手順は公式のREADMEを参照した。

renovatebot/github-actions

上記記載の通り、以下手順で進める。

  1. renovate 実行用のGithub Actions workflowファイルを作成
  2. 「1.」のworkflow実行に必要なPAT(Personal Access Token)を作成

1. renovate 実行に必要なファイルを作成

以下のファイルが最低限必要。

1)renovate実行用のGithub actionsのworkflowファイル

2)renovateの設定ファイル

それぞれ作成する。

1)renovate実行用のGithub actionsのworkflowファイル

以下の通り作成。

.github/worflows/renovate.yml

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'

ほぼ公式通りで、基本的な流れとしては以下の通り

  1. uses: actions/checkout@v4.1.1:ブランチをチェックアウト
  2. 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の設定ファイル

以下の通り作成。

.github/renovate.json

{
    "$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 repo:public_repo scope for only public repositories or the repo scope for public and private repositories, and add it to Secrets (repository settings) as RENOVATE_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 the token option.

引用元:renovatebot/github-actions

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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次