Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件

GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件

「Engineer LT#1 Android|Organized by U-NEXT」(2022年7月14日)での発表資料です。

okuzawats

July 14, 2022
Tweet

More Decks by okuzawats

Other Decks in Programming

Transcript

  1. GitHub ActionsでAndroidアプ
    リのテストを回しまくってたら
    全プロジェクトのCI/CDが完全
    停止する寸前だった件

    View full-size slide

  2. 自己紹介
    okuzawats
    フラー株式会社
    ソフトウェアエンジニア
    (Android)

    View full-size slide

  3. 今日話すことの要約
    GitHub Actions上で無計画にテストを回しまくってたら会社
    のGitHubが完全停止する寸前でした
    そんなことにならないよう、計画的にGitHub Actionsを回し
    ましょう

    View full-size slide

  4. 前提知識
    会社で契約しているGitHub Enterpriseは、月あたり使える時
    間の上限(単位:分/月)が決まっている。
    上限を超えるとGitHub Actionsが完全に止まってしまう(らしい)。
    ※ プランによるのかもしれない

    View full-size slide

  5. 事件の数日前

    View full-size slide

  6. 暫定対策
    macOS上で動いているGitHub Actionsのトリガーが走る頻度を落とす。
    macOS上で動いているGitHub Actionsを完全停止させるわけにはいかないので、頻度を落として様子を見よう、という判断。

    View full-size slide

  7. 事件当日

    View full-size slide

  8. ダメでした
    頻度は少なくなってもmacOS上で動いている子と、それ以外のOS上でも動いている子たちがモリモリとGitHub Actionsの残りを食べ尽くしました。

    View full-size slide

  9. Your enterprice has used 100% of included services for
    GitHub Actions.

    View full-size slide

  10. 100%中の100%!!!
    偉い人が追加でGitHubに課金してくれて、GitHub Actionsの枠を一時的に増強
    会社のCI/CDが完全停止する事態を回避

    View full-size slide

  11. やっぱりダメでした

    View full-size slide

  12. なんやかんやあってGitHub Actionsの完全停止は回避しました。

    View full-size slide

  13. 何が起こったのか

    View full-size slide

  14. エミュレータテスト on GitHub Actions
    昨年秋から、担当しているAndroidアプリにおいて、GitHub Actions上でエミュレータを用いた自動テストを回し始めた。

    View full-size slide

  15. 実行頻度
    Pull Request作成時やdevelopブランチへのpush時などにテス
    トを実行していた。
    普段は大きな開発がないプロジェクトなので、月あたりのエミュレータテストの実行回数はさほど多くなかった。

    View full-size slide

  16. macOSインスタンス
    GitHub Actions上でAndroidのエミュレータを実行する場合、macOSインスタンスの使用が推奨されている。
    GitHub Actions上でmacOSを動かすと、Ubuntuの場合の10倍の速さでGitHub Actionsの使用枠を消費する。

    View full-size slide

  17. 普段は問題なかった
    普段は大きな開発がないため、月あたりのエミュレータテストの実行回数はさほど多くなかった。
    定期的にGitHubの管理者に確認して、上限まで余裕があることを確認していた

    View full-size slide

  18. 問題がある時もあった
    ある機能を開発する時、エミュレータテストの実行回数が普段よりも大幅に増えた。
    そのためGitHub Actionsの使用量が増加し、簡単に上限に達した。

    View full-size slide

  19. 原因①
    macOS上で動くGitHub Actionsがトリガーされる頻度が一時的に高くなることで問題が発生する可能性を考慮せず、普段よりも大きな規模の開発に入ってしまった。

    View full-size slide

  20. 原因②
    普段からGitHub Actionsの使用量をモニタリングする習慣がなかった。

    View full-size slide

  21. 原因③
    GitHub Actionsの消費量はリアルタイムにモニタリングできないので、様子を見ている間に対応が後手に回ってしまった。

    View full-size slide

  22. 対策① 1日1回の定時実行に変更
    コストの高いmacOS上での実行頻度を見直しました。
    こういうやつです(※
    実際の設定とは異なります)

    View full-size slide

  23. 対策② 定期的なモニタリング
    定期的に実施されるMTG上で、GitHub Actionsの消費量を確認するようにしました。

    View full-size slide

  24. まとめ
    GitHub Actions上でAndroidのInstrumented Testを、
    macOS上で無計画に動かしてしまった。
    macOS上でGitHub Actionsを動かすのは高コストなので、無計画に回すとGitHub Actionsの枠を簡単に喰い潰す。
    ご利用は計画的に

    View full-size slide