iOSアプリでRenovateを使ってみた

# はじめに
`Renovate`という、パッケージマネージャーで管理しているライブラリのアップデートを自動化できるツールを知り
iOSアプリの`Cocoapods`で管理しているライブラリ更新を自動化させた内容をまとめました。

https://github.com/renovatebot/renovate

# 内容
チュートリアルがありましたので、こちらを参考にしながらやっていきいます👇

https://github.com/renovatebot/tutorial

### 1.インストール
GitHub Apps経由でRenovateをRepositoryに追加する
<img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/a8122431-2345-24b9-b07d-fa098a51e0cf.png
">

https://github.com/apps/renovate


今回は対象のRepositoryのみに追加したいので`Only select repositories`から対象のRepositoryを選択、ガイドに従って進む
<img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/fcfb43c2-21fe-7102-9e7e-2684cfea88bc.png"><img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/da9be5b2-45b6-6bf2-ffb1-e17ba4046822.png">
登録完了まで進んでいくとダッシュボードが表示され、先ほど選択したRepositoryの表示が確認できる
<img width="200" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/2b45c342-ebc9-9f29-2758-c18572d72684.png"><img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/5401cfc4-0dc8-7aa5-31e6-4a525397b700.png">

### 2.オンボーディング
GithubからRenovateを追加したRepositoryを見ると、新しいPR(オンボーディングPR)が自動生成されているのを確認できる
<img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/3e5405b5-4614-5331-b5e0-d62f4387fd6e.png"><img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/2558f22e-ba7a-4f70-6d6f-a24ee84fee70.png">
オンボーディングPRでは`renovate.json`というファイルが生成されていて
このファイルを書き換えることで`Renovate`の設定ができる
<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/8f04fa09-9681-787b-5e50-933a39de450e.png">

`renovate/configuration`のブランチで`renovate.json`を修正

```json
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:base"
  ]
}
```

ドキュメントには細かく記載があるが、今回はいくつかの記事を参考にしながら`renovate.json`を修正

https://docs.renovatebot.com/configuration-options/

```json
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:base", ":timezone(Asia/Tokyo)"],
  "labels": ["dependencies", "renovate"],
  "enabled": true,
  "automerge": false,
  "branchPrefix": "renovate/",
  "separateMajorMinor": true,
  "separateMultipleMajor": true,
  "prCreation": "immediate",
  "prHourlyLimit": 0,
  "baseBranches": ["master"],
  "prConcurrentLimit": 1,
  "vulnerabilityAlerts":{
    "enabled": true
  },
  "dependencyDashboard": true,
}
```
修正が完了したら、コミットしてPRを更新しておく

### Renovateを使ってライブラリをアップデート
オンボーディングPRをマージすることで
アップデート可能なライブラリが存在する場合はPRが自動生成される
<img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/b92f4ac7-55bb-48b9-49c6-41c3215c95f2.png">

マージすることでライブラリのアップデートが完了

ダッシュボードを確認すると`Renovate`のログが表示されていることがわかる
<img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/2e6c196d-ddf3-1987-ae78-3dd38ebc79b9.png">

Issueに生成されている`Dependency Dashboard`を確認すると
自動生成されたPRや`Renovate`が見ているパッケージマネージャーの内容が確認できる

<img width="300" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/abc3cb59-d5f0-ffe7-e98a-f9cf693faf13.png">

ダッシュボードから直接、ライブラリ更新の作成を手動でトリガーしたり
`Check this box to trigger a request Renovate to run again on this repository` オプションを有効にすることで直接手動で`Renovate bot`を再実行することができる


##### RenovateのCocoaPodsに関わるドキュメントページ
https://docs.renovatebot.com/modules/manager/cocoapods/

# おわりに
自動でライブラリのアップデートPRを作成してくれるのはとても便利で感動しました！`Realm`を使っているとうまくいかないなど、いくつか手動で対応が必要な場合もあるようですが。。。積極的に使っていこうと思います！

# 参考

https://zenn.dev/coffmark/articles/1943578025699c

https://ikesyo.hatenablog.com/entry/potatotips-77-renovate-for-ios