GiteaにRenovateを導入する


GiteaでもRenovateって使えますか…?
使えます!

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:issue
  • write:repository
  • read:package
  • read:misc
  • read:organization
  • read: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を作成してくれるようになります。

いかがでしたか?