Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RenovateをiOSアプリ開発に導入・運用した話
Search
coffmark
November 29, 2022
Programming
450
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RenovateをiOSアプリ開発に導入・運用した話
Mobile勉強会 Wantedly × チームラボ #7 で発表しました
https://wantedly.connpass.com/event/266081/
coffmark
November 29, 2022
More Decks by coffmark
See All by coffmark
Swift Concurrencyを利用したMVVMについて考える
coffmark
1
480
Other Decks in Programming
See All in Programming
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.7k
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
120
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
570
新卒PdEのリアル
ryu1013
1
420
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
140
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
190
アクセシビリティから考える情報設計
high_g_engineer
0
270
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
6
2.5k
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
1k
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
0
240
Oxlintはいいぞ(続)
yug1224
1
550
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.3k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
A Modern Web Designer's Workflow
chriscoyier
698
190k
Scaling GitHub
holman
464
140k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
250
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Mobile First: as difficult as doing things right
swwweet
225
10k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
320
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Transcript
RenovateをiOSアプリ開発に 導入・運用した話 coffmark Mobile勉強会 Wantedly × チームラボ #7
coffmark (コフマーク) 株式会社ドワンゴ iOSエンジニア
Mobile勉強会 Wantedly × チームラボ #6 継続的な依存性のアップデートにより得られたこと (久保出さん) https://speakerdeck.com/kubode/what-we-have-learned-from-continuou s-dependency-updates
話すこと ・Renovateとは ・iOSアプリの対応パッケージマネージャ ・導入方法 ・2ヶ月間ほど運用して良かったこと・大変だったこと ・まとめ
Renovateとは ・ライブラリの依存関係を自動で更新してくれるツール ・依存関係を解決した上で、バージョンアップを行うPull Requestを作成 ・Renovate構成ファイル書くことができます (renovate.jsonなど) ・レビュアーの人数、同時にアップデートするライブラリ数など https://github.com/renovatebot/renovate
Renovateの仕組み ① 対象となるレポジトリ内のライブラリの依存関係管理ファイルを取得 (ex. Podfile, Mintfile) ② ライブラリの依存関係管理ファイルから依存関係を全て取り出す
③ 構成ファイル(renovate.json)からどのライブラリを更新するか決める ⑤ 依存関係を解決して、Pull Requestを送信 ④ ライブラリ更新がある ⑤ 何もしない
iOSアプリの対応パッケージマネージャ Renovate Pull Request 会社の所属iOSチー ム CocoaPods #4667
使用している Carthage (正規表現を使う) XcodeGen (正規表現を使う) 使用しているが、 ライブラリ管理はして いない Package.swift #3911 .xcodeproj .xcworkspace #15133 (Draft) Mint #17351 by coffmark 使用している 2022/11/28時点
導入方法 ~ GitHub Actions ~
用意するもの ・GitHub Actions ・.github/workflow/renovate.yml ・Renovate構成ファイル ・renovate.json5 など ・参考: Configuration Options
.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'
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, }
Renovateを実行 https://github.com/coffmark/Renovate-iOS-sample/pull/39 coffmark/Renovate-iOS-sample
2ヶ月間ほど運用して良かったこと・大変だったこと
2ヶ月間運用してみて良かったこと - 👍 1週間に1つ以上のライブラリ更新ができている - 2ヶ月間で合計8つのライブラリを更新 - RxSwift, 6.5.0
- SwiftGen, 6.6.2 - 👍 ライブラリ更新が簡単に - 問題がなければapprove・merge、問題があればcloseするだけOK - closeすれば、また新しいPull Requestを作成してくれます
2ヶ月間運用してみて大変だったこと・改善したいこと - CIが通れば、すぐマージできるようにしたいこと - どうしてもUI系のライブラリは動作確認が必要 - バグが混入している新しいライブラリにアップデートしてしまいそうになる
- stabilityDaysを14日間に調整して様子をみています - (参考: stabilityDays)
まとめ - Renovateでライブラリ更新が(ほぼ)自動化できるようになりました - 改善点もいくつかあるので、今後改善していきたい
参考 ・dely Tech Blog: RenovateをiOSアプリ開発に導入してみた ・@ikesyoさん: RenovateによるiOSライブラリーの自動更新