Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RenovateをiOSアプリ開発に導入・運用した話

coffmark
November 29, 2022

 RenovateをiOSアプリ開発に導入・運用した話

Mobile勉強会 Wantedly × チームラボ #7 で発表しました
https://wantedly.connpass.com/event/266081/

coffmark

November 29, 2022
Tweet

More Decks by coffmark

Other Decks in Programming

Transcript

  1. Renovateの仕組み
 ① 対象となるレポジトリ内のライブラリの依存関係管理ファイルを取得 
 (ex. Podfile, Mintfile) 
 ② ライブラリの依存関係管理ファイルから依存関係を全て取り出す

    
 ③ 構成ファイル(renovate.json)からどのライブラリを更新するか決める 
 ⑤ 依存関係を解決して、Pull Requestを送信 
 ④ ライブラリ更新がある 
 ⑤ 何もしない

  2. iOSアプリの対応パッケージマネージャ
 
 Renovate
 Pull Request
 会社の所属iOSチー ム
 CocoaPods
 󰢍
 #4667


    使用している
 Carthage
 󰢁 (正規表現を使う)
 
 
 XcodeGen
 󰢁 (正規表現を使う)
 
 使用しているが、
 ライブラリ管理はして いない
 Package.swift
 󰢍
 #3911
 
 .xcodeproj
 .xcworkspace
 󰢁
 #15133 (Draft)
 
 Mint
 󰢍
 #17351 by coffmark
 使用している
 2022/11/28時点

  3. .github/workflow/renovate.yml
 https://github.com/renovatebot/github-action name: Run Renovate on: schedule: - cron: '0

    0 * * 1-5' jobs: renovate: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/[email protected] - name: Setup netrc uses: extractions/netrc@v1 with: machine: "github.com" username: ${{ secrets.USER_NAME }} password: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - name: Self-hosted Renovate uses: renovatebot/[email protected] with: configurationFile: renovate.json5 token: ${{ secrets.RENOVATE_TOKEN }} env: LOG_LEVEL: 'debug'
  4. renovate.json5
 { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": ["config:base", ":timezone(Asia/Tokyo)"], "platform": "github", //

    ... 省略 "baseBranches": ["main"], // mainブランチ "branchPrefix": "renovate/", "labels": ["dependencies"], "prCreation": "immediate", "automerge": false, // 動作確認が必要な場合があるので、自動マージをオフに "prHourlyLimit": 0, "prConcurrentLimit": 1, // Renovateが提出できるOpenなPR数は1つまで "prBodyNotes": [ ... ], // PR説明文にレビュー手順を記載 "separateMajorMinor": true "separateMultipleMajor": true, }
  5. 2ヶ月間運用してみて良かったこと
 - 👍 1週間に1つ以上のライブラリ更新ができている
 - 2ヶ月間で合計8つのライブラリを更新 
 - RxSwift, 6.5.0


    - SwiftGen, 6.6.2
 
 - 👍 ライブラリ更新が簡単に
 - 問題がなければapprove・merge、問題があればcloseするだけOK 
 - closeすれば、また新しいPull Requestを作成してくれます