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

CIをGASで継続的に改善したら幸せになった

ああうえ
February 21, 2019

 CIをGASで継続的に改善したら幸せになった

ああうえ

February 21, 2019
Tweet

More Decks by ああうえ

Other Decks in Technology

Transcript

  1. CIをGASで継続的に
    改善したら幸せになった
    CI/CD Test Night #3
    pixiv Inc.
    kwzr / Kazumasa Kawazure
    2019.02.21

    View full-size slide

  2. 2
    自己紹介
    ● kwzr / Kazumasa Kawazure
    ○ Twitter : @_kwzr_
    ● ピクシブでpixiv Sketch iOSの開発
    ○ 以前はいろんなiOS・Androidアプリの開発
    ● 情熱大陸に映り込んだことがある
    ○ オレは情熱大陸出たことあるけど、キミは
    ?
    kwzr
    モバイルアプリエンジニア

    View full-size slide

  3. ● 2018年1月からBitriseに移行
    ○ 社内ライブラリなどを含めて21個のアプリが登録
    ○ 毎週約300回以上のビルド
    ○ Org Standard Plan(最大6並列ビルド)
    ○ 社内配布方法の変更
    ● サーバーサイドやWebフロントのことはわかりません
    ○ Circle CIとGitLab CIを使っているはず
    3
    ピクシブのモバイルCI事情について

    View full-size slide

  4. ● 2018年1月からBitriseに移行
    ○ 社内ライブラリなどを含めて21個のアプリが登録
    ○ 毎週約300回以上のビルド ← どうやって取っているの
    ○ Org Standard Plan(最大6並列ビルド) ← どうやって決めたの
    ○ 社内配布方法の変更 ← なに
    ● サーバーサイドやWebフロントのことはわかりません
    ○ Circle CIとGitLab CIを使っているはず
    4
    話すこと

    View full-size slide

  5. ● Jenkinsの介護がつらく、CIサービスを探していた
    ○ 新しいXcodeが出たらインストールが必要
    ○ VPNを繋がないと見れない。特にスマホからアクセスしたい時に面倒
    ■ 社員以外の人にCIの結果を見てもらうのが難しかった
    ○ 自作の配布ページを作ってそこから社内配布していた
    ■ メンテあまりされていない
    ■ アプリによってはDeployGateを使っていた
    5
    Bitriseに移行した流れ

    View full-size slide

  6. ● 言わずと知れたモバイルアプリ向け
    CIサービス
    ● GUIでワークフローやトリガーを操作できる。
    UIがかわいい(重要)
    ● 他CIサービスと比べても比較的安価
    ● アプリの配布機能もある(Deploy to Bitrise.io)
    ● とてもよい!
    6
    Bitriseとは

    View full-size slide

  7. ● 最初はOrg Standard Plan(最大3並列)を導入
    ● 弊社、アプリの数が多い
    ○ 参考: モバイルアプリエンジニア約20人 : iOS・Androidアプリ 13個
    ● アプリのフルビルド時間は10-20分くらい掛かってとても長い
    ● 思い思いにビルドを走らせると、最大
    3並列ビルドだと頻繁に詰まる!!
    ● → プラン変えよう!
    7
    移行してわかってきた問題

    View full-size slide

  8. ● Google Apps Script(GAS)とBitrise.io API v0.1を使用
    ○ Bitrise.io APIはまだWIPらしいけど、だいたい動いてる
    ● 始業時間前に前日のビルドを集計して、スプレッドシートに記録
    ○ ビルド回数・ホールド時間・ビルド時間等
    ○ https://github.com/kvvzr/bitrise-collect
    ○ 2018年2月から取ってる
    8
    まずは計測しよ...

    View full-size slide

  9. ● 手軽にデプロイできる
    ● WebHookからの起動や、スケジューリングができる
    ● 計測したいので、SpreadSheetに書き出したい
    ● 普段使っている、慣れているもので要件を満たしていたらなんでも良さそう
    9
    なぜGAS?

    View full-size slide

  10. ● 置かれている状況による
    ○ 金の弾丸が使えるなら、良いやつを選べば良さそう
    (適当)
    ■ おそらく、稟議の起案理由に妥当なことを書く必要
    ○ 計測した結果を使って、状況に合うコスパの良いプランを選ぶ
    ● 1日の総ホールド時間を基準にすることにした
    ○ ホールド時間 = ビルド開始時間 - ビルド実行(トリガー)時間
    10
    何を見てプランを決めるか?

    View full-size slide

  11. 11
    総ホールド時間の推移(2018/08-2018/12)

    View full-size slide

  12. 12
    総ホールド時間の推移(2018/08-2018/12)
    Org Elite Plan
    最大3並列ビルド
    2 week trial
    ホールド時間減ってる

    View full-size slide

  13. ● Org Elite Planはハイスペックなマシンが使えるプラン
    ○ 毎ビルド5分以上早く終わるようになってすごい!
    ■ しかし、まだそこそこ詰まる
    ○ 値段がOrg Standard Planの倍
    ○ スペック上げるより、並列数増やしたほうが良さそう
    13
    計測してわかったこと

    View full-size slide

  14. 14
    総ホールド時間の推移(2018/08-2018/12)
    Org Standard Plan
    最大6並列ビルド
    導入
    狙い通り、ホールド時間がほ
    ぼ0になった

    View full-size slide

  15. ● 何を減らしたいのか
    ○ 待ってる時間の人件費換算? (でも待ってる間別の作業できるし
    ...
    ● 気持ち!!!!!!!1(のすり減り)
    ○ ホールド待ちは他のプロジェクトが原因なのでヘイトが溜まる
    ○ 自分のプロジェクトのビルドが遅いのは、ある程度自分でなんとかできる
    ● → 並列数を上げるだけで、コスパよく気持ちの良い開発ができるように!
    ○ 金の弾丸があれば、Elite Planを湯水のごとく使おう
    15
    総ホールド時間を基準にした理由

    View full-size slide

  16. ● 「ビルドして」トリガー
    ○ Bitriseは現状Pushしたときに発火するトリガーのみ
    ○ 定期的にチームや社内向けにアプリを配布したい!けど
    ○ 配布物を作るビルドは長いので、必要なときだけ走らせたい!
    ■ ユニットテストだけPushで走らせる
    ■ だいたい半分くらいの時間
    ● 社内配布アプリの一覧ページ(あまりうまく機能しなかった)
    17
    その他の取り組み事例

    View full-size slide

  17. 18
    とても便利

    View full-size slide

  18. ● GitHubのPRにコメントしたら、ビルドが走るようにする
    ○ ポイントはPRトリガーとして実行すること
    ■ PRにコメントするステップでPRの番号が取れない
    ○ GitHub Actions使いたい
    19
    トリガーをGASで自作
    「ビルドして」だった
    らAPI叩く
    WebHook
    Pull Request
    結果を通知
    GAS
    Bitrise

    View full-size slide

  19. 20
    https://gist.github.com/kvvzr/8be18b134b3da1828bf0905df2625d40

    View full-size slide

  20. ● comment-on-github-pull-request っていうコミュニティステップ作った
    ○ https://github.com/kvvzr/bitrise-step-comment-on-github-pull-request
    ● PRに配布物へのリンク(QRコード)が紐づくと、過去のあの変更でどうなったか、追いやす
    くて良い
    ○ Slackだけに流すと探すのが大変
    21
    宣伝: GitHubにコメントするステップ

    View full-size slide

  21. ● Bitriseはいいぞ
    ● 置かれている環境によって計測してプランを検討しよう
    ○ 他社がどういうプラン使っているのか調べても出てこなくてつらかった
    ○ ワークフローに無駄がある場合もある。計測すると気付ける
    ● GASなどを使えば計測もトリガーも手軽に自作できる
    ● ステップも簡単に作れるので、秘伝のタレを持っていたらステップ化しよう!
    スライド中にあるBitriseの価格は2019年2月21日のものです
    22
    まとめ

    View full-size slide