×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
GitHub ActionsでAndroidアプ リのテストを回しまくってたら 全プロジェクトのCI/CDが完全 停止する寸前だった件
Slide 2
Slide 2 text
自己紹介 okuzawats フラー株式会社 ソフトウェアエンジニア (Android)
Slide 3
Slide 3 text
今日話すことの要約 GitHub Actions上で無計画にテストを回しまくってたら会社 のGitHubが完全停止する寸前でした そんなことにならないよう、計画的にGitHub Actionsを回し ましょう
Slide 4
Slide 4 text
前提知識 会社で契約しているGitHub Enterpriseは、月あたり使える時 間の上限(単位:分/月)が決まっている。 上限を超えるとGitHub Actionsが完全に止まってしまう(らしい)。 ※ プランによるのかもしれない
Slide 5
Slide 5 text
事件の数日前
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
暫定対策 macOS上で動いているGitHub Actionsのトリガーが走る頻度を落とす。 macOS上で動いているGitHub Actionsを完全停止させるわけにはいかないので、頻度を落として様子を見よう、という判断。
Slide 8
Slide 8 text
事件当日
Slide 9
Slide 9 text
ダメでした 頻度は少なくなってもmacOS上で動いている子と、それ以外のOS上でも動いている子たちがモリモリとGitHub Actionsの残りを食べ尽くしました。
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
Your enterprice has used 100% of included services for GitHub Actions.
Slide 12
Slide 12 text
100%中の100%!!! 偉い人が追加でGitHubに課金してくれて、GitHub Actionsの枠を一時的に増強 会社のCI/CDが完全停止する事態を回避
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
やっぱりダメでした
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
なんやかんやあってGitHub Actionsの完全停止は回避しました。
Slide 18
Slide 18 text
何が起こったのか
Slide 19
Slide 19 text
エミュレータテスト on GitHub Actions 昨年秋から、担当しているAndroidアプリにおいて、GitHub Actions上でエミュレータを用いた自動テストを回し始めた。
Slide 20
Slide 20 text
実行頻度 Pull Request作成時やdevelopブランチへのpush時などにテス トを実行していた。 普段は大きな開発がないプロジェクトなので、月あたりのエミュレータテストの実行回数はさほど多くなかった。
Slide 21
Slide 21 text
macOSインスタンス GitHub Actions上でAndroidのエミュレータを実行する場合、macOSインスタンスの使用が推奨されている。 GitHub Actions上でmacOSを動かすと、Ubuntuの場合の10倍の速さでGitHub Actionsの使用枠を消費する。
Slide 22
Slide 22 text
普段は問題なかった 普段は大きな開発がないため、月あたりのエミュレータテストの実行回数はさほど多くなかった。 定期的にGitHubの管理者に確認して、上限まで余裕があることを確認していた
Slide 23
Slide 23 text
問題がある時もあった ある機能を開発する時、エミュレータテストの実行回数が普段よりも大幅に増えた。 そのためGitHub Actionsの使用量が増加し、簡単に上限に達した。
Slide 24
Slide 24 text
原因① macOS上で動くGitHub Actionsがトリガーされる頻度が一時的に高くなることで問題が発生する可能性を考慮せず、普段よりも大きな規模の開発に入ってしまった。
Slide 25
Slide 25 text
原因② 普段からGitHub Actionsの使用量をモニタリングする習慣がなかった。
Slide 26
Slide 26 text
原因③ GitHub Actionsの消費量はリアルタイムにモニタリングできないので、様子を見ている間に対応が後手に回ってしまった。
Slide 27
Slide 27 text
対策① 1日1回の定時実行に変更 コストの高いmacOS上での実行頻度を見直しました。 こういうやつです(※ 実際の設定とは異なります)
Slide 28
Slide 28 text
対策② 定期的なモニタリング 定期的に実施されるMTG上で、GitHub Actionsの消費量を確認するようにしました。
Slide 29
Slide 29 text
まとめ GitHub Actions上でAndroidのInstrumented Testを、 macOS上で無計画に動かしてしまった。 macOS上でGitHub Actionsを動かすのは高コストなので、無計画に回すとGitHub Actionsの枠を簡単に喰い潰す。 ご利用は計画的に