Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
iOS リポジトリへの Renovate の導入
Search
Kenta Enomoto
July 05, 2023
Technology
460
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOS リポジトリへの Renovate の導入
Ebisu.mobile #3 の発表資料です。
https://hey.connpass.com/event/286007/
Kenta Enomoto
July 05, 2023
More Decks by Kenta Enomoto
See All by Kenta Enomoto
スキャン音は鳴るのにカートに入らない — レジと物理デバイスの事件簿
enomotok
0
43
Renovate のバグを直した話
enomotok
0
16
[DroidKaigi 2025] 共有と分離 - Compose Multiplatform "本番導入" の設計指針
enomotok
0
150
Kotlin Multiplatform / Compose Multiplatform を活用したモバイルアプリ開発の最前線
enomotok
0
170
Compose MultiplatformにおけるiOSネイティブ実装のベストプラクティス
enomotok
1
540
STORES ブランドアプリのスケールするアプリづくり
enomotok
0
110
What's new in Xcode 16 ダイジェスト
enomotok
0
900
Introducing Pkl
enomotok
0
3.2k
iOS開発とGitLab CI
enomotok
7
4.1k
Other Decks in Technology
See All in Technology
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
150
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
290
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
290
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
130
GitHub Agentic Workflows を触ってみる
htkym
2
910
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
670
形式手法を使って仕様をコーディングしよう
mikanichinose
0
160
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
190
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
800
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
The kernel report
ennael
PRO
1
190
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
0
120
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.1k
WCS-LA-2024
lcolladotor
0
840
Fireside Chat
paigeccino
43
4k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
580
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
520
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Transcript
2023-07-05 Ebisu.mobile #3 STORES 株式会社 榎本健太 iOS リポジトリへの Renovate の導入
自己紹介 2 榎本 健太 STORES 株式会社 STORES ブランドアプリチーム iOS エンジニア
2023年5月入社 twitter.com/enomotok_ github.com/enomoto
ライブラリの更新を自動化するモチベーション 3 • 機能追加 • バグフィックス • セキュリティリスクの低減 • ビッグリリースを避ける
とはいえ手作業で行うのは大変
Renovate とは 4 依存関係の自動更新をサポートするためのツール 依存しているライブラリのリリースを検知 アップデートのための Pull Request を自動で作って くれる
同様のサービスとして Dependabot がある https://github.com/apps/renovate
Renovate の導入方法 5 GitHub App をインストールするだけで簡単に導入で きる Swift Package Manager
CocoaPods regexManagers の設定が必要なケース Carthage XcodeGen でプロジェクトの構成管理をしている
Renovate の導入方法 6 [pull request] Configure Renovate
Renovate の導入方法 7 [pull request] Configure Renovate
renovate.json 8 { "$schema": "https://docs.Renovatebot.com/Renovate-schema.json", "extends": [ "config:base" ], "schedule":
[ "every weekend" # Pull Request を作成するタイミング ], "labels": [ "Renovate" # Pull Request に付与するラベル ], "packageRules": [ # ライブラリ毎に細かいルールを設定できる { "excludePackageNames": ["onevcat/Kingfisher"] # 更新対象から除外する } ] }
困ったこと、工夫したこと 9 • XcodeGen で構成管理しているプロジェクトでは regexManagers の設定 が必要 • Package.resolved
が更新されない問題
regexManagers とは 10 regexManagers では正規表現を使ってライブラリ名とバージョン番号をキャプ チャ renovate.json に設定を記載
regexManagers による、ライブラリ名とバージョン番号の検知 11 project.yml (抜粋) packages: Firebase: url: https://github.com/firebase/firebase-ios-sdk from:
8.0.0 renovate.json (抜粋) "regexManagers": [ { "fileMatch": [ "^project.yml$" ], "matchStrings": [ "url: https:\\/\\/github\\.com\/(?<depName>.*?)(\\.git)?\\s*from: (?<currentValue>.*?)\\s" ], "datasourceTemplate": "github-releases" } ]
Package.resolved が更新されない問題 12 PR が生成されるタイミングで差分をコミットするようにしている CI の途中で以下の Shell Script を呼び出す
#!/usr/bin/env bash set -eo pipefail # ここで依存解決をしているのは、ライブラリのリポジトリに含めているデモ用のプロジェクト xcodebuild -project "Appmaker-Demo/Appmaker-Demo.xcodeproj" -resolvePackageDependencies diff_result=$(git diff --name-only) if [[ "$diff_result" == *"Package.resolved"* ]]; then git ls-files | grep 'Package.resolved$' | xargs git add git commit -m "Update Package.resolved [skip ci]" # bitrise で使用しているスクリプトの抜粋なので bitrise の環境変数を参照します git push origin HEAD:$BITRISE_GIT_BRANCH fi
自分の環境で手軽に試す方法 13 チュートリアル README.md の通りにぽちぽちしていくだけで簡単に試せる https://github.com/Renovatebot/tutorial iOS のリポジトリで試したい GitHub で公開されているリポジトリを
fork して、自分で設定してみると よい https://github.com/pointfreeco/isowords とか
参考URL 14 https://docs.renovatebot.com/ https://speakerdeck.com/ikesyo/renovateniyoruiosraiburarifalsezi-dong- geng-xin https://qiita.com/_asa08_/items/b0be1453f70efb3b9c29 https://tech.dely.jp/entry/2020/12/04/102515
おわり 15 ありがとうございました