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
iOS リポジトリへの Renovate の導入
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kenta Enomoto
July 05, 2023
Technology
450
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
調理場で使うタブレット専用アプリ をどうつくったか -STORES モバイルオーダー 実装の舞台裏-
enomotok
0
32
[DroidKaigi 2025] 共有と分離 - Compose Multiplatform "本番導入" の設計指針
enomotok
0
51
Kotlin Multiplatform / Compose Multiplatform を活用したモバイルアプリ開発の最前線
enomotok
0
150
Compose MultiplatformにおけるiOSネイティブ実装のベストプラクティス
enomotok
1
520
STORES ブランドアプリのスケールするアプリづくり
enomotok
0
100
What's new in Xcode 16 ダイジェスト
enomotok
0
880
Introducing Pkl
enomotok
0
3.2k
iOS開発とGitLab CI
enomotok
7
4.1k
ポモドーロテクニックについて
enomotok
0
190
Other Decks in Technology
See All in Technology
AIが実装を自走する時代の認知負債との戦い
lycorptech_jp
PRO
2
1k
AI時代におけるテストの基礎の再定義 / Rethinking the Fundamentals of Testing in the AI Era
mineo_matsuya
4
1k
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
280
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
270
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
1k
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
1.2k
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
270
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
2
320
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
430
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
510
実践!既存 Project への AI-Driven Development 適用〜 一ヶ月で Project 唯一のフロントエンドエンジニアを作り出せ〜
lycorptech_jp
PRO
0
380
「休む」重要さ
smt7174
5
1.4k
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1k
Writing Fast Ruby
sferik
630
63k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
360
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
エンジニアに許された特別な時間の終わり
watany
108
250k
Mind Mapping
helmedeiros
PRO
1
290
Typedesign – Prime Four
hannesfritz
42
3.1k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
770
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
Documentation Writing (for coders)
carmenintech
77
5.4k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
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 ありがとうございました