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
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのC...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
okuzawats
July 14, 2022
Programming
0
690
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件
「Engineer LT#1 Android|Organized by U-NEXT」(2022年7月14日)での発表資料です。
okuzawats
July 14, 2022
Tweet
Share
More Decks by okuzawats
See All by okuzawats
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
450
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
430
カンファレンス参加をいかに正当化するか
okuzawats
0
340
「勉強になった」で終わらせない、ストロングスタイルの勉強会
okuzawats
0
440
10年モノのAndroidアプリのコード品質を改善していく、3つの取り組み
okuzawats
0
1.4k
Androidアプリ開発におけるSonarCloudの活用
okuzawats
0
1.3k
何故、UseCaseは1メソッドなのか
okuzawats
3
2.2k
例外を投げるな、値を返せ
okuzawats
9
8.2k
Kotlinのifを愛でる
okuzawats
0
1k
Other Decks in Programming
See All in Programming
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
170
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
150
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
550
PHPで TLSのプロトコルを実装してみる
higaki_program
0
390
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
360
Windows on Ryzen and I
seosoft
0
350
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
150
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1.1k
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
100
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
900
The free-lunch guide to idea circularity
hollycummins
0
320
『Kubernetes ☸️ で実践する Platform Engineering 』を最高速度で読み抜いたる!!👊🏻
hiroki_hasegawa
0
100
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
The Pragmatic Product Professional
lauravandoore
37
7.2k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
990
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
81
Claude Code のすすめ
schroneko
67
220k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
280
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
250
Navigating Weather and Climate Data
rabernat
0
140
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の枠を簡単に喰い潰す。 ご利用は計画的に