1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Renovateというリポジトリの依存関係の更新を自動化できるツールをざっくり検証

Last updated at Posted at 2022-04-02

はじめに

こんにちは。
私が参画している開発チームで以前、Renovateを使ってライブラリ等の自動更新試してみたいね、という話があったそうで、
近々私が担当することになりそうなので、事前学習のためRenovateについて少し学んだ内容を書いてみたいと思います。

Renovateとは

Renovateは、以下を自動化するためのオープンソースツールです。

  • リポジトリ内の依存関係の検出(オープンソースおよびプライベート/クローズドソース)
  • 依存関係の更新があるかどうかを確認する
  • 依存関係を更新するためのコミットとマージ/プルリクエストの作成
  • リリースノートの表示

公式サイトより。Google日本語翻訳。)

リポジトリ内で依存するライブラリ等って、普通に数十〜数百なんてこともざらですよね。
依存関係にある個々のバージョンアップを追いかけるのも大変だし、かといって古いバージョンのままだったりすると・・
脆弱性が見つかったりなどあって、やはり最新バージョンを使うのが良いだろうことはわかるが面倒な作業。。
そこを自動化してくれ、バージョンの更新があればそれを検知→プルリクエストを作成(Renovateの設定で自動でマージも可)までやってくれる便利なツールがRenovateのようです。

なお、Renovateは以下が提供されており、好きな方法で試すことができます。

  • npmパッケージ
  • Dockerイメージ
  • 無料のGitHubアプリ

Renovateが監視するパッケージファイル

公式サイト の説明によると、Renovateは以下のようなパッケージファイルを監視し、

  • package.json
  • Gemfile
  • go.mod

以下のような方法でパッケージファイルを更新するようです。

  1. リポジトリをスキャンして、パッケージファイルとその依存関係を検出します
  2. 新しいバージョンが存在するかどうかを確認します
  3. 利用可能なアップデートのプルリクエストを発生させます

実際に試してみる

それでは早速、簡単に試してみたいと思います。
今回はGitHubを使ったやり方を試してみたいと思います。

1.まずは検証用のリポジトリを用意
renovate-test という検証用のリポジトリを作成。

2.検証用にpackage.jsonを作成
npm init で雛形を作成し、適当にdependenciesを定義しました。(以下抜粋)
2022/4/2時点ではrequestライブラリの最新バージョンは「2.88.2」なので、一つ古いバージョンをここであえて指定。(npmのサイト より)
この状態でいったんリポジトリにプッシュしておきます。

package.json 抜粋
  "devDependencies": {
    "request": "^2.88.0"
  },
  "dependencies": {
    "request": "^2.88.0"
  }

3.Renovate の設定
続いて、リポジトリにRenovate を設定します。
まずはこちら のRenovateのGitHub APPのページからInstallボタンをクリックして、自分のGitHubアカウントに紐付けます。(既に紐付けが完了している場合は、「Configure」ボタンになっていると思います。)
スクリーンショット 2022-04-02 18.19.26.png

紐付けが完了したら、
「Configure」ボタンをクリック
→遷移するページ下部の「Repository access」からリポジトリを選択します。(今回は「Only select repositories」のほうにしました。)
→「Save」をクリック
スクリーンショット 2022-04-02 18.20.53.png

少しすると、「renovate.json」を追加せよ、とRenovate がプルリクエストを作成しています。
「renovate.json」にRenovateの様々なオプションを定義していくことになります。

スクリーンショット 2022-04-02 18.25.32.png

プリリクエストをマージして少しすると、今度はIssueと新たなプルリクエストが作成されます。
(Issueの内容)
スクリーンショット 2022-04-02 19.27.31.png

「Pin dependency request to 2.88.2」が作成されているようです。リンクをクリックしてみます。

スクリーンショット 2022-04-02 19.29.32.png

プルリクエストに飛びました。
内容を見てみると、古いバージョンを指定していたrequestライブラリを最新バージョンに更新せよ、とのことです。
(dependenciesのほうは更新してくれないのか・・)
プルリクエストをマージすると、Issueの内容も更新されます。

スクリーンショット 2022-04-02 19.32.29.png

終わりに

以上簡単ですが、Renovate を触ってみました。
リポジトリの依存関係に更新があるか確認する、という面倒な作業を自動化でき、なかなか便利なツールだと思いました。

とりあえずはデフォルトの設定で動かしてみましたが、任意のタイミングで動くようスケジューリングしたりなど、
様々なオプションでカスタマイズし、より便利に使うことができます。
長くなってしまうので、そのあたりも簡単に試した内容をこちらの記事にまとめてみました。
ご興味ありましたら、そちらも見ていただけたら幸いです。
読んでいただき、ありがとうございました!

参考情報

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?