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

Bitrise Pipelines に移行して、クレジットを節約しながら並列でビルド・テストを回す / Migrate to Bitrise Pipelines and save credits while run builds and tests in parallel

Bitrise Pipelines に移行して、クレジットを節約しながら並列でビルド・テストを回す / Migrate to Bitrise Pipelines and save credits while run builds and tests in parallel

Bitrise Pipelines に移行して、クレジットを節約しながら並列でビルド・テストを回す / Migrate to Bitrise Pipelines and save credits while run builds and tests in parallel

iOS Test Online
2022/10/28 19:00〜 10分枠1
https://testonline.connpass.com/event/261910/

登壇ノートはこちら: https://zenn.dev/dena/articles/376a722a08394e

treastrain / Tanaka Ryoga

October 28, 2022
Tweet

More Decks by treastrain / Tanaka Ryoga

Other Decks in Technology

Transcript

  1. Bitrise Pipelines に移行して、
    クレジットを節約しながら
    並列でビルド・テストを回す
    treastrain / Tanaka Ryoga
    株式会社ディー・エヌ・エー
    iOS Test Online @ Online(Zoom Webinars) Friday, October 28, 2022
    © DeNA Co.,Ltd.
    #ios_test_online

    View Slide

  2. 2
    自己紹介
    treastrain / Tanaka Ryoga
    2021年4月 新卒入社
    iOS App 開発をメインに取り組み
    Bitrise は入社後(配属後)に初めて触った
    Zenn Publication はじまりました! 👉 https://zenn.dev/p/dena
    DeNA Co., Ltd. iOS App Developer
    @treastrain
    #ios_test_online

    View Slide

  3. 3
    目次
    Bitrise Pipelines とは
    ワークフローを並列に実行する従来の方法
    Bitrise Pipelines を使ったワークフローの並列実行
    Bitrise Pipelines を
    活用するために iOS App プロジェクトでできること
    1
    2
    3
    4
    #ios_test_online

    View Slide

  4. 4
    Bitrise Pipelines とは
    #ios_test_online

    View Slide

  5. 5
    Bitrise - モバイルアプリのための継続的インテグレーションとデリバリー。 https://go.bitrise.io/bitrise-japan

    View Slide

  6. 6
    Bitrise Pipelines とは
    1
    ステップ
    #ios_test_online
    ● git clone する
    ● pod install する
    ● xcodebuild する
    ● …etc.

    View Slide

  7. 7
    Bitrise Pipelines とは
    1
    ワークフロー
    ステップ1
    ステップ2
    ステップ3
    …続く
    #ios_test_online

    View Slide

  8. クレジット消費
    8
    Bitrise Pipelines とは
    1
    ワークフロー
    ステップ1
    ステップ2
    ステップ3
    …続く
    トリガー
    (git push・プルリクエスト)
    #ios_test_online

    View Slide

  9. 9
    Build Pipelines: efficient CI/CD workflows with parallelization | Bitrise https://blog.bitrise.io/post/build-pipelines-efficient-ci-cd-workflows-with-parallelization

    View Slide

  10. 10
    Bitrise Pipelines とは
    1
    ワークフロー
    ステップ1
    ステップ2
    ステップ3
    …続く
    #ios_test_online

    View Slide

  11. 11
    Bitrise Pipelines とは
    1
    パイプライン
    ワークフロー
    ステップ1
    ステップ2
    ステップ3
    …続く
    #ios_test_online

    View Slide

  12. 12
    Bitrise Pipelines とは
    1
    パイプライン
    ワークフロー1
    ステップ1
    …続く
    ワークフロー2
    …続く
    #ios_test_online

    View Slide

  13. クレジット消費
    クレジット消費
    13
    Bitrise Pipelines とは
    1
    …続く
    #ios_test_online
    トリガー
    (git push・プルリクエスト)
    パイプライン
    ワークフロー1
    ステップ1
    …続く
    ワークフロー2
    …続く

    View Slide

  14. 14
    ワークフローを並列に実行する
    従来の方法
    #ios_test_online

    View Slide

  15. 15
    ワークフローを並列に実行する従来の方法
    ● 「ワークフローを並列に実行する」
    ● 並列実行できるところ(テストの実行など)を並列化
    ● すべてを直列で実行したときよりも実行時間を短縮できるかも
    2
    ワークフローA
    ステップA-1
    …続く
    ステップA-2
    ワークフローB
    ステップB-1
    …続く
    ステップB-2
    ワークフロー
    並列で実行できるように
    ステップを分割
    #ios_test_online

    View Slide

  16. 16
    ワークフローを並列に実行する従来の方法
    ● ワークフローの中で「別なワークフロー」の実行を開始するステップを追加
    2
    ワークフローA
    ステップA-1
    …続く
    ステップA-2
    ワークフローB
    ステップB-1
    …続く
    ステップB-2
    ワークフローO
    ステップO-1
    ステップO-2
    ステップO-3
    …続く
    #ios_test_online

    View Slide

  17. 17
    ワークフローを並列に実行する従来の方法
    ● 「別なワークフロー」の完了を待つステップで成果物を取得
    2
    ワークフローA
    ステップA-1
    …続く
    ステップA-2
    ワークフローB
    ステップB-1
    …続く
    ステップB-2
    ワークフローO
    ステップO-1
    ステップO-2
    ステップO-3
    …続く
    #ios_test_online

    View Slide

  18. 18
    治安維持のためにCI/CDサービスを活用しておこなったこと - Speaker Deck https://speakerdeck.com/tarappo/cdsahisuwohuo-yong-siteokonatutakoto
    iOS Test TeaTime #3(2021年10月21日)

    View Slide

  19. iOS Test TeaTime #3(2021年10月21日)
    19
    治安維持のためにCI/CDサービスを活用しておこなったこと - Speaker Deck https://speakerdeck.com/tarappo/cdsahisuwohuo-yong-siteokonatutakoto

    View Slide

  20. 20
    Bitrise Pipelines を使った
    ワークフローの並列実行
    #ios_test_online

    View Slide

  21. 21
    Bitrise Pipelines を使ったワークフローの並列実行
    ● 「"ワークフロー"を実行するためのワークフロー」がパイプラインに
    置き換わるイメージ
    3
    パイプライン
    ワークフロー1
    ステップ1
    …続く
    ワークフロー2
    …続く
    #ios_test_online

    View Slide

  22. 22
    Bitrise Pipelines を使ったワークフローの並列実行
    ● パイプラインの中のワークフローは「ステージ」に属する
    3
    パイプライン
    ワークフロー2
    ワークフロー1
    ワークフロー3
    …続く
    #ios_test_online

    View Slide

  23. 23
    Bitrise Pipelines を使ったワークフローの並列実行
    ● パイプラインの中のワークフローは「ステージ」に属する
    3
    パイプライン
    ワークフロー2
    ワークフロー1
    ワークフロー3
    ワークフロー0 ワークフロー4
    ステージ1 ステージ2 ステージ3
    #ios_test_online

    View Slide

  24. 24
    Bitrise Pipelines を使ったワークフローの並列実行
    ● 「ステージ」の中のワークフローは並列で実行される
    ● ステージ中の全てのワークフローが完了すると次の「ステージ」に進む
    3
    パイプライン
    ワークフロー2
    ワークフロー1
    ワークフロー3
    ワークフロー0 ワークフロー4
    ステージ1 ステージ2 ステージ3
    #ios_test_online

    View Slide

  25. 25
    Build Pipelines: efficient CI/CD workflows with parallelization | Bitrise https://blog.bitrise.io/post/build-pipelines-efficient-ci-cd-workflows-with-parallelization

    View Slide

  26. 26
    Bitrise Pipelines を
    活用するために
    iOS App プロジェクトでできること
    #ios_test_online

    View Slide

  27. ● 同じステージの他のワークフローの完了を待っている間のクレジット消費無し
    ○ 従来の方法ではクレジットを消費していた
    ■ ワークフロー分割時に考慮する必要がある 定期的にメンテナンスが必要
    27
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    4 #ios_test_online
    他のワークフローを開始
    テスト①
    他のワークフロー完了を待機 結果のマージなど
    テスト②
    テスト③
    待機時間も
    クレジットを消費

    View Slide

  28. ● 同じステージの他のワークフローの完了を待っている間のクレジット消費無し
    ○ 待機時間が長くなっても、それによるクレジット消費量は増加しない
    28
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    4 #ios_test_online
    パイプライン
    テスト②
    テスト①
    テスト③
    ステージ1 ステージ2
    結果のマージなど
    (テスト②・③が終わるまでの)
    待機時間の
    クレジット消費なし

    View Slide

  29. 29
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    ● パイプラインの一部のワークフローが失敗しても、全てを再実行する必要なし
    4 #ios_test_online
    治安維持のためにCI/CDサービスを活用しておこなったこと - Speaker Deck https://speakerdeck.com/tarappo/cdsahisuwohuo-yong-siteokonatutakoto

    View Slide

  30. 30
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    ● パイプラインの一部のワークフローが失敗しても、全てを再実行する必要なし
    4 #ios_test_online
    治安維持のためにCI/CDサービスを活用しておこなったこと - Speaker Deck https://speakerdeck.com/tarappo/cdsahisuwohuo-yong-siteokonatutakoto
    テスト前に失敗した
    「成果物」が無い
    後続に影響?
    ここから全てやり直す…?

    View Slide

  31. 31
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    ● パイプラインの一部のワークフローが失敗しても、全てを再実行する必要なし
    4 #ios_test_online
    パイプライン
    テスト②
    テスト①
    テスト③
    ステージ1 ステージ2
    パイプライン
    テスト②
    テスト①
    テスト③
    ステージ1 ステージ2
    再実行
    ステージ1テスト②で止まると
    ステージ2は実行しない
    ステージ1テスト①③は実行せず、
    アーティファクトも再実行前のものを使用

    View Slide

  32. 32
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    ● 最も効率のよいパイプライン・ワークフロー構成を考える
    ○ 時間面・消費クレジット面・再実行の面
    4 #ios_test_online
    パイプライン
    事前準備
    事前準備
    事前準備
    事前準備
    ビルド
    ビルド
    ビルド
    ビルド
    テスト① テスト②
    テスト③
    テスト④ テスト⑤ テスト⑥
    テスト結果のマージ
    テスト結果のマージ
    テスト結果のマージ

    View Slide

  33. ● ビルドははじめのステージで行う
    パイプライン
    33
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    4 #ios_test_online
    事前準備 ビルド

    View Slide

  34. ● ビルドははじめのステージで行う
    ● ビルド成果物を次のステージに持っていき、それを使ってテストを実行する
    パイプライン
    34
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    4 #ios_test_online
    事前準備 ビルド テスト① テスト②
    テスト③
    テスト④ テスト⑤ テスト⑥

    View Slide

  35. ● ビルドははじめのステージで行う
    ● ビルド成果物を次のステージに持っていき、それを使ってテストを実行する
    パイプライン
    35
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    4 #ios_test_online
    事前準備 ビルド テスト① テスト②
    テスト③
    テスト④ テスト⑤ テスト⑥
    テスト結果のマージ

    View Slide

  36. 36
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    ● Bitrise のレシピサンプルは Test Plans を使ったものになっている
    4 #ios_test_online
    workflow-recipes/ios-merging-test-results-and-deploying-to-the-test-reports-add-on.md at main · bitrise-io/workflow-recipes
    https://github.com/bitrise-io/workflow-recipes/blob/main/recipes/ios-merging-test-results-and-deploying-to-the-test-reports-add-on.md

    View Slide

  37. 37
    workflow-recipes/ios-merging-test-results-and-deploying-to-the-test-reports-add-on.md at main · bitrise-io/workflow-recipes
    https://github.com/bitrise-io/workflow-recipes/blob/main/recipes/ios-merging-test-results-and-deploying-to-the-test-reports-add-on.md

    View Slide

  38. 38
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    ● Bitrise Pipelines は現時点でビジュアルエディターが存在しない
    4 #ios_test_online

    View Slide

  39. 39
    Bitrise Pipelines を活用するために
    iOS App プロジェクトでできること
    ● bitrise.yml を直接書く必要がある
    ● 難しい文法は全くなく、サンプルレシピ通りに書けばよい
    ○ Bitrise の中の人が作った
    非公式なビジュアルエディタが公式ブログで紹介されている
    4 #ios_test_online
    Build Pipelines: efficient CI/CD workflows with parallelization | Bitrise https://blog.bitrise.io/post/build-pipelines-efficient-ci-cd-workflows-with-parallelization

    View Slide

  40. 40
    Pipeline Viewer https://damienbitrise.github.io/Pipeline-UI/

    View Slide

  41. 41
    まとめ
    Bitrise Pipelines を使うとワークフローの並列実行が簡単に
    ステージ間のアーティファクトの受け渡しも可能
    消費するクレジットも従来よりも少なくできるかも
    慣れてきたら Bitrise Pipelines に合った
    ワークフローにアップデートしよう
    1
    2
    3
    4
    #ios_test_online

    View Slide

  42. © DeNA Co.,Ltd. 42
    #ios_test_online
    資料は https://zenn.dev/dena/articles/376a722a08394e にて公開しています

    View Slide