MENU

Renovate(onboarding)

業務で依存関係の更新を自動化するためにdependabotを導入したが、

絶妙に痒いところに手が届かないところがあってつらいな、と思っていました。

代替案としてrenovateが良さそうだなと思いつつ、 その後触手が伸びてませんでしたが、ちょっと触ってみようかと思い立ちました。

今回は、導入〜実行のはじめの一歩ぐらいの軽い内容を確認してみます。
なんとなく全体感を掴めたら良いな、と。

目次

Renovateとは

公式:URL

プロジェクト内の依存関係の更新を自動化できるツール。

使用中のパッケージを自動で監視して、より新しいパッケージが検出されたパッケージの更新を提示するpr・issueを自動で作成してくれます。

導入方法

以下のいずれかの方法で実行可能だそうです。

  1. npm package(renovate
  2. docker image(renovate/renovate
  3. Github App(renovate

今回はまずRenovateの動作を確認することを目的としておりますが、

3. Github App」がお手軽そうだったので、こちらで始めてみます。

Github App(renovate

1. renovate をinstall

Github App > から、アプリケーションをinstallします。

ページ下部に「Install it for free」ボタンがあるので、クリック。

引用元:https://github.com/marketplace/renovate

ページ遷移後、設定画面が出てきました。

今回は、Renovateの挙動確認用に用意したリポジトリ(test-renovate)のみに適用したいので、 「Only select rpositories」をチェックして、ブルダウンで上記のリポジトリを選択。

続いて、以下の2点を設定しました。 (スクショと取り忘れました…)

※ 「依存性の管理対象に更新があるかどうか検査すること=スキャン」と呼称しているため、以降では同操作をスキャンと記載する。

 まずは、modeの設定

  • mode
    • silent
      • renovate対象Repositoryについて、スキャンするが、issueやpull requestは作成しない。
    • interactive
      • renovate対象Repositoryについて、スキャンした上で、issueやpull requestを自動作成する。

ひとまず、pull request も作成して欲しいので、後者の interactive modeを選択。

続いて、Repository onboardingの設定。

  • Repository onboarding
    • onboarding pull request
      • renovate 側がonboarding用のprを自動生成する。
      • このprをマージ後、初めてスキャンが開始する
    • Scan repos with config file
      • renovate 設定ファイル(default:renovate.json ? )が存在するRepositoryのみスキャン対象とする
    • Scan all repos
      • renovate設定ファイルの有無に応じて挙動が変わるらしい
        • 存在する場合
          • renovate 設定ファイルを使用して、対象Repository をスキャンする
        • 存在しない場合
          • renovate 設定ファイルを新規設定して、対象Repository をスキャンする

今回は、初回であり、なおかつonboarding用のprも作成して欲しいので「Onboarding pull request」を選択しました。

💡 上記の設定は「https://developer.mend.io/github/username」の自身のページからいつでも変更可能

まとめると、以下通り初期設定しました。

  • Only select repositories
  • mode:interactive
  • Repository onboarding:Onboarding pull request

上記の設定をした上で、renovateをinstall 完了すると、設定通りonboarding prが作成されました。

onboarding prについて

以下がrenovateにより自動生成されたonboarding prです。

上記prの中身を軽く見てみます。

  • Files changed

renovateの設定ファイル(renovate.json)が作成されている。

(ただし、このデフォルトで適用される設定も自由に設定できるらしい。方法はあまり調べていないので、別の機会に譲る)

  • Conversation

概要は以下の通り

## 概要
- Renovate を有効するには、このprをマージしてください。
- 無効にするには、closeしてください。

## 検出されたパッケージファイル
- docker-compose.yml (docker-compose)
- docker/nginx/Dockerfile (dockerfile)
- docker/php-fpm/Dockerfile (dockerfile)
- docker/postgres/Dockerfile (dockerfile)

## 設定概要
デフォルトのコンフィグのプリセットに基づき、Renovateは以下のことを行います。

- このPRがマージされた時のみ、依存関係の更新を開始します。
- Renovate 依存性ダッシュボードの作成を有効にする
***

* Renovateが依存関係をアップグレードする方法を変更したい場合、このブランチのrenovate.jsonにカスタム設定を追加してください。
Renovateは次回実行時にPull Requestの記述を更新します。

## 期待されること

現在の設定の場合、以下3つのprが作成されます。

***

* ブランチの作成は1時間に2つまでに制限されるので、CIリソースを圧迫したり、プロジェクトに負担をかけたりすることはありません。詳しくはprhourlylimitのドキュメントを参照してください。

pr の内容をまとめると、

renovateの推奨設定が設定された設定ファイル(renovate.json)が自動生成されて、

このprをマージされ次第、pr説明文記載の設定でrenovateによるスキャンが開始される、ということみたいです。

pr内容の充実さに驚きました。

  • 自動的にパッケージファイルが検出される
  • 自動生成された設定ファイル(renovate.json)がどのような設定になっているのか、自然言語で説明してくれている
  • renovateのスキャンにより作成されるprが提示されている。

さらに、

デフォルトの設定が気に入らない場合、上記ブランチのrenovate.jsonにカスタム設定を追加 & renovateを再実行すれば、

prの内容を修正後の設定に応じた内容に書き換えてくれる様です。

ということは、 好みの設定するまで、このprでrenovate.jsonの修正を加えて、デバック・調整が可能ということですね。

とても親切なんですね。

特に修正せずprをマージすると、

しばらく時間をおいた後、以下の通り自動的にrenovateによりパッケージ更新用のprが作成されました!!!

折角なので、prを覗いてみます。

pr を覗いてみる

Update nginx Docker tag to v1.25.0」のprを覗いてみます。

  • Files changed

なるほど、nginxのminor updateが提示されています。

  • Conversation

概要は以下の通り

## 概要
このprは以下のupdateを含んでいます。

- nginx: minor version up (1.24.0-bussleye → 1.25.0-bussleye)

## 設定
- スケジュール:ブランチ作成 - 随時(スケジュール定義なし)、自動マージ - 随時(スケジュール定義なし
- オートマージ:コンフィグで無効になっています。問題なければ手動でマージしてください。
- リベース:PRがコンフリクトした場合、またはリベース/リトライのチェックボックスにチェックを入れた場合
- ignore:このPRを閉じれば、二度とこの更新についてリマインドされません

---
✅ prをリベース/リトライ したい場合、ここにチェック
---

なるほど。

onboarding prにおいて、renovete.json > extends > config:recommends になっていましたが、

その場合、上記「設定」 に書かれているような内容になるということですね。

Dependency dashboard について

実際に運用で使うかどうかはともかく、

便利だなーと思ったDependency dashboardについて。


topページ

renovateがinstallされているRepositoryの一覧が確認できます。

個別Repositoryページ

ここが結構豊富で良いです。

概要は以下の通り

## Recent jobs

renovateによるスキャン履歴一覧

## Renovate Updates

検知された依存性について

### open

検知された依存性のうち、prが作成済のもの。
強制的にリトライ・リベースしたい場合には、チェックした上で「Create/Rebase」をクリック。

### Rate-limited

検知された依存性のうち、レート制限によりprの作成が見送られたもの。
強制的にprを作成したい場合には、チェックした上で「Create/Rebase」をクリック。

---

✅ Create/Rebase

## Detected Dependencies(検出された依存性)

renovateのスキャンにより検出された依存性更新の一覧

renovate履歴がまとまっていて、だいぶ良い感じですね。

Rate-limitedの動きを確認するために、作成済みのpr(nginx)を一つcloseしてみると、

renovateのスキャンが自動で開始された後、以下の様な表記となりました。

Renovate Updates の表示が変わっています。

  • open
  • Rate-limited
  • Ignored or Blocked

「Ignored or Blocked」 の機能が特に良いですね。

まとめ(感想)

renovateの本当に触りの部分を触っただけですが、ここまででも、仕組みの大枠は理解できました。

デフォルトの設定を適用しただけなので、
次は以下の様な実用的な設定を適用してみたい。

  • Schedule
  • Group
  • prではなくdraftを作成

参考

Renovateの導入と半年間の運用の振り返り

Renovateによるライブラリの定期アップデート|【技業LOG】技術者が紹介するNTTPCのテクノロジー|【公式】NTTPC

内部実装から理解するRenovateの処理の流れ – orangain flavor

内部設計から理解するRenovate運用ガイド | Wantedly Engineer Blog

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次