はじめに
こんにちは。
私が参画している開発チームで以前、Renovateを使ってライブラリ等の自動更新試してみたいね、という話があったそうで、
近々私が担当することになりそうなので、事前学習のためRenovateについて少し学んだ内容を書いてみたいと思います。
Renovateとは
Renovateは、以下を自動化するためのオープンソースツールです。
- リポジトリ内の依存関係の検出(オープンソースおよびプライベート/クローズドソース)
- 依存関係の更新があるかどうかを確認する
- 依存関係を更新するためのコミットとマージ/プルリクエストの作成
- リリースノートの表示
(公式サイトより。Google日本語翻訳。)
リポジトリ内で依存するライブラリ等って、普通に数十〜数百なんてこともざらですよね。
依存関係にある個々のバージョンアップを追いかけるのも大変だし、かといって古いバージョンのままだったりすると・・
脆弱性が見つかったりなどあって、やはり最新バージョンを使うのが良いだろうことはわかるが面倒な作業。。
そこを自動化してくれ、バージョンの更新があればそれを検知→プルリクエストを作成(Renovateの設定で自動でマージも可)までやってくれる便利なツールがRenovate
のようです。
なお、Renovate
は以下が提供されており、好きな方法で試すことができます。
- npmパッケージ
- Dockerイメージ
- 無料のGitHubアプリ
Renovateが監視するパッケージファイル
公式サイト の説明によると、Renovate
は以下のようなパッケージファイルを監視し、
- package.json
- Gemfile
- go.mod
以下のような方法でパッケージファイルを更新するようです。
- リポジトリをスキャンして、パッケージファイルとその依存関係を検出します
- 新しいバージョンが存在するかどうかを確認します
- 利用可能なアップデートのプルリクエストを発生させます
実際に試してみる
それでは早速、簡単に試してみたいと思います。
今回はGitHubを使ったやり方を試してみたいと思います。
1.まずは検証用のリポジトリを用意
renovate-test という検証用のリポジトリを作成。
2.検証用にpackage.jsonを作成
npm init
で雛形を作成し、適当にdependencies
を定義しました。(以下抜粋)
2022/4/2時点ではrequestライブラリの最新バージョンは「2.88.2」なので、一つ古いバージョンをここであえて指定。(npmのサイト より)
この状態でいったんリポジトリにプッシュしておきます。
"devDependencies": {
"request": "^2.88.0"
},
"dependencies": {
"request": "^2.88.0"
}
3.Renovate
の設定
続いて、リポジトリにRenovate
を設定します。
まずはこちら のRenovateのGitHub APPのページからInstallボタンをクリックして、自分のGitHubアカウントに紐付けます。(既に紐付けが完了している場合は、「Configure」ボタンになっていると思います。)
紐付けが完了したら、
「Configure」ボタンをクリック
→遷移するページ下部の「Repository access」からリポジトリを選択します。(今回は「Only select repositories」のほうにしました。)
→「Save」をクリック
少しすると、「renovate.json」を追加せよ、とRenovate
がプルリクエストを作成しています。
「renovate.json」にRenovate
の様々なオプションを定義していくことになります。
プリリクエストをマージして少しすると、今度はIssueと新たなプルリクエストが作成されます。
(Issueの内容)
「Pin dependency request to 2.88.2」が作成されているようです。リンクをクリックしてみます。
プルリクエストに飛びました。
内容を見てみると、古いバージョンを指定していたrequestライブラリを最新バージョンに更新せよ、とのことです。
(dependenciesのほうは更新してくれないのか・・)
プルリクエストをマージすると、Issueの内容も更新されます。
終わりに
以上簡単ですが、Renovate
を触ってみました。
リポジトリの依存関係に更新があるか確認する、という面倒な作業を自動化でき、なかなか便利なツールだと思いました。
とりあえずはデフォルトの設定で動かしてみましたが、任意のタイミングで動くようスケジューリングしたりなど、
様々なオプションでカスタマイズし、より便利に使うことができます。
長くなってしまうので、そのあたりも簡単に試した内容をこちらの記事にまとめてみました。
ご興味ありましたら、そちらも見ていただけたら幸いです。
読んでいただき、ありがとうございました!