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
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのC...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
okuzawats
July 14, 2022
Programming
780
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件
「Engineer LT#1 Android|Organized by U-NEXT」(2022年7月14日)での発表資料です。
okuzawats
July 14, 2022
More Decks by okuzawats
See All by okuzawats
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
520
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
510
カンファレンス参加をいかに正当化するか
okuzawats
0
400
「勉強になった」で終わらせない、ストロングスタイルの勉強会
okuzawats
0
480
10年モノのAndroidアプリのコード品質を改善していく、3つの取り組み
okuzawats
0
1.5k
Androidアプリ開発におけるSonarCloudの活用
okuzawats
0
1.4k
何故、UseCaseは1メソッドなのか
okuzawats
3
2.4k
例外を投げるな、値を返せ
okuzawats
9
8.3k
Kotlinのifを愛でる
okuzawats
0
1.2k
Other Decks in Programming
See All in Programming
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
160
Kubernetes祭り #2 OP/ED
bells17
0
100
Are APIs Still Relevant in the AI Era?
soyuka
0
430
AIに “答え“を書かせるのを やめてみた
___akari11
0
110
残高管理から台帳サービスへの進化
artoy
0
170
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
130
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
34
15k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
630
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
The Invisible Side of Design
smashingmag
301
52k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
390
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
The SEO identity crisis: Don't let AI make you average
varn
0
580
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Evolving SEO for Evolving Search Engines
ryanjones
0
310
Transcript
GitHub ActionsでAndroidアプ リのテストを回しまくってたら 全プロジェクトのCI/CDが完全 停止する寸前だった件
自己紹介 okuzawats フラー株式会社 ソフトウェアエンジニア (Android)
今日話すことの要約 GitHub Actions上で無計画にテストを回しまくってたら会社 のGitHubが完全停止する寸前でした そんなことにならないよう、計画的にGitHub Actionsを回し ましょう
前提知識 会社で契約しているGitHub Enterpriseは、月あたり使える時 間の上限(単位:分/月)が決まっている。 上限を超えるとGitHub Actionsが完全に止まってしまう(らしい)。 ※ プランによるのかもしれない
事件の数日前
None
暫定対策 macOS上で動いているGitHub Actionsのトリガーが走る頻度を落とす。 macOS上で動いているGitHub Actionsを完全停止させるわけにはいかないので、頻度を落として様子を見よう、という判断。
事件当日
ダメでした 頻度は少なくなってもmacOS上で動いている子と、それ以外のOS上でも動いている子たちがモリモリとGitHub Actionsの残りを食べ尽くしました。
None
Your enterprice has used 100% of included services for GitHub
Actions.
100%中の100%!!! 偉い人が追加でGitHubに課金してくれて、GitHub Actionsの枠を一時的に増強 会社のCI/CDが完全停止する事態を回避
None
None
やっぱりダメでした
None
なんやかんやあってGitHub Actionsの完全停止は回避しました。
何が起こったのか
エミュレータテスト on GitHub Actions 昨年秋から、担当しているAndroidアプリにおいて、GitHub Actions上でエミュレータを用いた自動テストを回し始めた。
実行頻度 Pull Request作成時やdevelopブランチへのpush時などにテス トを実行していた。 普段は大きな開発がないプロジェクトなので、月あたりのエミュレータテストの実行回数はさほど多くなかった。
macOSインスタンス GitHub Actions上でAndroidのエミュレータを実行する場合、macOSインスタンスの使用が推奨されている。 GitHub Actions上でmacOSを動かすと、Ubuntuの場合の10倍の速さでGitHub Actionsの使用枠を消費する。
普段は問題なかった 普段は大きな開発がないため、月あたりのエミュレータテストの実行回数はさほど多くなかった。 定期的にGitHubの管理者に確認して、上限まで余裕があることを確認していた
問題がある時もあった ある機能を開発する時、エミュレータテストの実行回数が普段よりも大幅に増えた。 そのためGitHub Actionsの使用量が増加し、簡単に上限に達した。
原因① macOS上で動くGitHub Actionsがトリガーされる頻度が一時的に高くなることで問題が発生する可能性を考慮せず、普段よりも大きな規模の開発に入ってしまった。
原因② 普段からGitHub Actionsの使用量をモニタリングする習慣がなかった。
原因③ GitHub Actionsの消費量はリアルタイムにモニタリングできないので、様子を見ている間に対応が後手に回ってしまった。
対策① 1日1回の定時実行に変更 コストの高いmacOS上での実行頻度を見直しました。 こういうやつです(※ 実際の設定とは異なります)
対策② 定期的なモニタリング 定期的に実施されるMTG上で、GitHub Actionsの消費量を確認するようにしました。
まとめ GitHub Actions上でAndroidのInstrumented Testを、 macOS上で無計画に動かしてしまった。 macOS上でGitHub Actionsを動かすのは高コストなので、無計画に回すとGitHub Actionsの枠を簡単に喰い潰す。 ご利用は計画的に