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
CIをGASで継続的に改善したら幸せになった
Search
ああうえ
February 21, 2019
Technology
3
1.5k
CIをGASで継続的に改善したら幸せになった
ああうえ
February 21, 2019
Tweet
Share
More Decks by ああうえ
See All by ああうえ
iOS Apple Dev Tutorialsとpointfreeのモダン実装を比較する
kwzr
0
320
エンジニアとデザイナーがわかる iPadの画面サイズ対応入門
kwzr
0
69
react-reconcilerでオレオレReact Nativeを作ろう!
kwzr
0
1.7k
iOS・Androidで使える デザインシステムをどう実装するか
kwzr
3
5k
Apple Pencilと左利き対応
kwzr
5
1.7k
BitriseでUIの差分検出
kwzr
0
1.3k
Other Decks in Technology
See All in Technology
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
1
180
Janus
bkuhlmann
1
490
KubeCon EU 2024 Recap “Kubernetes Policy Time Machine: Where to Next?”
ryysud
0
220
FrontDoorとWebAppsを組み合わせた際のリダイレクト処理の注意点
kenichirokimura
1
520
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
310
Cracking the KubeCon CfP
inductor
2
250
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.8k
Hands-on Gemini, the Google DeepMind LLM
meteatamel
1
110
現代CSSフレームワークの内部実装とその仕組み
poteboy
7
3.6k
リテール金融(キャッシュレス・ネット銀行・ネット証券)の競争環境と経済圏
8maki
0
1.1k
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
380
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
A Philosophy of Restraint
colly
197
16k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
A designer walks into a library…
pauljervisheath
200
23k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
Designing with Data
zakiwarfel
96
4.8k
Writing Fast Ruby
sferik
621
60k
Being A Developer After 40
akosma
57
580k
Become a Pro
speakerdeck
PRO
11
4.5k
Six Lessons from altMBA
skipperchong
21
3k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
Transcript
CIをGASで継続的に 改善したら幸せになった CI/CD Test Night #3 pixiv Inc. kwzr /
Kazumasa Kawazure 2019.02.21
2 自己紹介 • kwzr / Kazumasa Kawazure ◦ Twitter :
@_kwzr_ • ピクシブでpixiv Sketch iOSの開発 ◦ 以前はいろんなiOS・Androidアプリの開発 • 情熱大陸に映り込んだことがある ◦ オレは情熱大陸出たことあるけど、キミは ? kwzr モバイルアプリエンジニア
• 2018年1月からBitriseに移行 ◦ 社内ライブラリなどを含めて21個のアプリが登録 ◦ 毎週約300回以上のビルド ◦ Org Standard Plan(最大6並列ビルド)
◦ 社内配布方法の変更 • サーバーサイドやWebフロントのことはわかりません ◦ Circle CIとGitLab CIを使っているはず 3 ピクシブのモバイルCI事情について
• 2018年1月からBitriseに移行 ◦ 社内ライブラリなどを含めて21個のアプリが登録 ◦ 毎週約300回以上のビルド ← どうやって取っているの ◦ Org
Standard Plan(最大6並列ビルド) ← どうやって決めたの ◦ 社内配布方法の変更 ← なに • サーバーサイドやWebフロントのことはわかりません ◦ Circle CIとGitLab CIを使っているはず 4 話すこと
• Jenkinsの介護がつらく、CIサービスを探していた ◦ 新しいXcodeが出たらインストールが必要 ◦ VPNを繋がないと見れない。特にスマホからアクセスしたい時に面倒 ▪ 社員以外の人にCIの結果を見てもらうのが難しかった ◦ 自作の配布ページを作ってそこから社内配布していた
▪ メンテあまりされていない ▪ アプリによってはDeployGateを使っていた 5 Bitriseに移行した流れ
• 言わずと知れたモバイルアプリ向け CIサービス • GUIでワークフローやトリガーを操作できる。 UIがかわいい(重要) • 他CIサービスと比べても比較的安価 • アプリの配布機能もある(Deploy
to Bitrise.io) • とてもよい! 6 Bitriseとは
• 最初はOrg Standard Plan(最大3並列)を導入 • 弊社、アプリの数が多い ◦ 参考: モバイルアプリエンジニア約20人 :
iOS・Androidアプリ 13個 • アプリのフルビルド時間は10-20分くらい掛かってとても長い • 思い思いにビルドを走らせると、最大 3並列ビルドだと頻繁に詰まる!! • → プラン変えよう! 7 移行してわかってきた問題
• Google Apps Script(GAS)とBitrise.io API v0.1を使用 ◦ Bitrise.io APIはまだWIPらしいけど、だいたい動いてる •
始業時間前に前日のビルドを集計して、スプレッドシートに記録 ◦ ビルド回数・ホールド時間・ビルド時間等 ◦ https://github.com/kvvzr/bitrise-collect ◦ 2018年2月から取ってる 8 まずは計測しよ...
• 手軽にデプロイできる • WebHookからの起動や、スケジューリングができる • 計測したいので、SpreadSheetに書き出したい • 普段使っている、慣れているもので要件を満たしていたらなんでも良さそう 9 なぜGAS?
• 置かれている状況による ◦ 金の弾丸が使えるなら、良いやつを選べば良さそう (適当) ▪ おそらく、稟議の起案理由に妥当なことを書く必要 ◦ 計測した結果を使って、状況に合うコスパの良いプランを選ぶ •
1日の総ホールド時間を基準にすることにした ◦ ホールド時間 = ビルド開始時間 - ビルド実行(トリガー)時間 10 何を見てプランを決めるか?
11 総ホールド時間の推移(2018/08-2018/12)
12 総ホールド時間の推移(2018/08-2018/12) Org Elite Plan 最大3並列ビルド 2 week trial ホールド時間減ってる
• Org Elite Planはハイスペックなマシンが使えるプラン ◦ 毎ビルド5分以上早く終わるようになってすごい! ▪ しかし、まだそこそこ詰まる ◦ 値段がOrg
Standard Planの倍 ◦ スペック上げるより、並列数増やしたほうが良さそう 13 計測してわかったこと
14 総ホールド時間の推移(2018/08-2018/12) Org Standard Plan 最大6並列ビルド 導入 狙い通り、ホールド時間がほ ぼ0になった
• 何を減らしたいのか ◦ 待ってる時間の人件費換算? (でも待ってる間別の作業できるし ... • 気持ち!!!!!!!1(のすり減り) ◦ ホールド待ちは他のプロジェクトが原因なのでヘイトが溜まる
◦ 自分のプロジェクトのビルドが遅いのは、ある程度自分でなんとかできる • → 並列数を上げるだけで、コスパよく気持ちの良い開発ができるように! ◦ 金の弾丸があれば、Elite Planを湯水のごとく使おう 15 総ホールド時間を基準にした理由
16
• 「ビルドして」トリガー ◦ Bitriseは現状Pushしたときに発火するトリガーのみ ◦ 定期的にチームや社内向けにアプリを配布したい!けど ◦ 配布物を作るビルドは長いので、必要なときだけ走らせたい! ▪ ユニットテストだけPushで走らせる
▪ だいたい半分くらいの時間 • 社内配布アプリの一覧ページ(あまりうまく機能しなかった) 17 その他の取り組み事例
18 とても便利
• GitHubのPRにコメントしたら、ビルドが走るようにする ◦ ポイントはPRトリガーとして実行すること ▪ PRにコメントするステップでPRの番号が取れない ◦ GitHub Actions使いたい 19
トリガーをGASで自作 「ビルドして」だった らAPI叩く WebHook Pull Request 結果を通知 GAS Bitrise
20 https://gist.github.com/kvvzr/8be18b134b3da1828bf0905df2625d40
• comment-on-github-pull-request っていうコミュニティステップ作った ◦ https://github.com/kvvzr/bitrise-step-comment-on-github-pull-request • PRに配布物へのリンク(QRコード)が紐づくと、過去のあの変更でどうなったか、追いやす くて良い ◦ Slackだけに流すと探すのが大変
21 宣伝: GitHubにコメントするステップ
• Bitriseはいいぞ • 置かれている環境によって計測してプランを検討しよう ◦ 他社がどういうプラン使っているのか調べても出てこなくてつらかった ◦ ワークフローに無駄がある場合もある。計測すると気付ける • GASなどを使えば計測もトリガーも手軽に自作できる
• ステップも簡単に作れるので、秘伝のタレを持っていたらステップ化しよう! スライド中にあるBitriseの価格は2019年2月21日のものです 22 まとめ