RenovateはGitHubなどで利用できる、リポジトリの依存関係を自動で更新してくれるツールです。
Dockerfileやpackage.json、Cargo.tomlなど、さまざまなファイルの依存関係を更新してくれます。
普段からGiteaを使用しているのですが、RenovateもGiteaで使いたいと思い、導入してみました。
Renovateを立てる
Githubだとmend.ioのホステッドサービスがありますが、Giteaに対しては接続できません。
そのため、Renovateを自分で立てる必要があります。
https://docs.renovatebot.com/examples/self-hosting/
Renovateはrenovate/renovateというDockerイメージを公式が提供してくれているので、これを使用します。
ただし、1回実行すると落ちてしまうので、適当にbashスクリプトでループさせるなどが必要です。
services: renovate: image: renovate/renovate:latest restart: unless-stopped volumes: - ./config.js:/usr/src/app/config.js entrypoint: ["sh", "-c"] env_file: - .env command: > "while true; do renovate; echo 'Renovate finished. Sleeping for 1 hour...'; sleep 3600; done"giteaの設定
https://docs.renovatebot.com/modules/platform/gitea/
こちらのドキュメントを参考に、Giteaの設定を行います。
まずはGiteaにRenovate用のユーザーを作成します。
次に、設定->アプリケーションから、Renovate用のアクセストークンを作成します。
このユーザーはRenovateがリポジトリにアクセスするためのものなので、以下の権限を与えます。
write:issuewrite:repositoryread:packageread:miscread:organizationread:user
Github Personal Access Tokenの設定
任意ではありますが、Githubにある依存関係のChangelogなどを参照するために、GithubのPersonal Access Tokenも設定しておくと便利です。
https://docs.renovatebot.com/mend-hosted/github-com-token/#how-to-provide-a-githubcom-token
こちらのドキュメントを参考に、GithubのPersonal Access Tokenを作成し、Renovateの環境変数RENOVATE_GITHUB_COM_TOKENに設定します。
config.jsの設定
Renovateの設定ファイルであるconfig.jsを作成します。
すべてのリポジトリにOnboarding PRを作ってほしくないのでonboardingをfalseに設定しています
module.exports = { platform: "gitea", endpoint: "https://git.example.com/api/v1", token: "renovate-user-access-token", autodiscover: true, onboarding: false,};これでRenovateがGiteaのリポジトリを自動で検出して、依存関係の更新PRを作成してくれるようになります。
いかがでしたか?