はじめに
前回の記事 renovateをGithub ActionsでセルフホストするではPAT(fine-grained tokens)を用いてrenovateをセルフホストしました。
今回は、Github Appsを用いてRenovateをセルフホストしていきます。
設定方法
1. Github Appの作成
まず、https://github.com/settings/apps/new でGithub Appを作成します。
ここで作成したアプリがDependency Dashboardをissueに作成したり、PRを出したりします。
項目名 | 設定 |
---|---|
Github App name | 任意のアプリ名。意外と被りが厳しい |
Homepage URL | アプリのwebサイト。ダミーでもOK |
Identifying and authorizing users | 変更なし |
Post installation | 変更なし |
Webhook | 今回は使わないのでチェックを外す |
Permissions | あとで詳しく説明 |
Where can this GitHub App~ | 上はアプリの可視性がprivateになり、下はpublicになる |
Permissionsについて
Permissionsはこのドキュメントに書かれているものを設定する。書いてある順番や権限の種類がバラバラで少し見にくいが、整理するとこのようになる。
- Repository permissions
- Administration: read
- Checks: read-write
- Commit statuses: read-write
- Contents: read-write
- Dependabot alerts: read
- Issues: read-write
- Metadata: read(Mandatory)
- Pull requests: read-write
- Workflows: read-write
- Organization permissions
- Members: read
- Account permissions
- なし
2. Github Appの設定
Create Github Appという緑色のボタンを押して、入力に不備がなければ以下のURLに飛ばされる。
https://github.com/settings/apps/[アプリ名]
一番上のAbout項にApp IDが書いてあるので、これをコピーしておく。
次に、Private keys項にある作成ボタンを押す。するとキーが作成され、.pemファイルがダウンロードされる。この.pemファイルの中身を全部コピーしておく。
もしアプリのアイコンに画像を設定したければ、Display information項で画像を設定できる。ここに何も設定しない場合、アプリのアイコンはアプリをインストールしたuserまたはorganizationのアイコンが使用される。
3. Github Appのインストール
Install Appを選ぶとアプリの可視性に応じてインストール可能なuser/organizationの一覧が表示される。(グレーアウトされているが)未インストールの場合緑色のinstallボタンがあるため、これを押す。
すると、このような画面に移動する。上を選ぶと、ユーザのリポジトリにまとめてインストールされる(はず)。今回は下を選び、アプリをインストールするリポジトリを選択し、画面下の緑色のInstallボタンを押す。
ちなみに、Install先が権限のないリポジトリだと、ここはRequestになる。
4. リポジトリ設定
先ほどコピーしておいたApp IDとPrivate Keyを、リポジトリ設定からsecretsにそれぞれAPP_ID
とPRIVATE_KEY
という名称で保存する。
なお、.pemファイル内の-----BEGIN RSA PRIVATE KEY-----
と書かれている部分から最後までコピペする必要がある(1敗)
5. Github ActionsのWorkflowを作成
.github/workflows/renovate.ymlを作成し、以下をコピペする。RENOVATE_REPOSITORIES: 'username/repositoryname'
の箇所は各々で読み替えてください。NODE_OPTIONSは対象リポジトリの規模に応じて変更してください。このドキュメントにrunnerごとのメモリ上限などが書かれています。
name: Renovate
on:
workflow_dispatch:
schedule:
- cron: '0 * * * *'
jobs:
renovate:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v2
id: app-token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v4
- name: Run Renovate
uses: renovatebot/github-action@v43.0.11
with:
token: ${{ steps.app-token.outputs.token }}
env:
LOG_LEVEL: debug
RENOVATE_REPOSITORIES: 'username/repositoryname'
NODE_OPTIONS: '--max-old-space-size=4096'
5. renovate.jsonを作成
ここは詳しく書かないが、とりあえず動作のために置いておく。
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"dependencyDashboard": true
}
結果
Dependency Dashboard、PRが作成される。
おわりに
RenovateをGithub Actionsでセルフホストする手順をできるだけ最新の情報でまとめてみました。
参考にしてもらえたら幸いです。
次回は、キャッシュを用いたrenovateの高速化について書きたいです。
参考文献