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

Firebase SDKを手動管理したらCIビルドが3分になった話 / reduce_ci_runtime

uhooi
October 21, 2021

Firebase SDKを手動管理したらCIビルドが3分になった話 / reduce_ci_runtime

uhooi

October 21, 2021
Tweet

More Decks by uhooi

Other Decks in Programming

Transcript

  1. 2021.10.21(Thu) iOS Test TeaTime #3
    @the_uhooi
    Firebase SDK を 手動管理したら

    CIビルドが になった話

    3

    View Slide

  2. Mobile app developer @uhooi
    @uhooi
    @the_uhooi

    View Slide

  3. PICTURE BOOK
    MONSTER
    ORIGINAL
    累計100万DL(予定)
    主要画面数2

    View Slide

  4. 01 ウホーイ図鑑 の 課題

    View Slide

  5. 01 ウホーイ図鑑の課題

    View Slide

  6. 01 ウホーイ図鑑の課題

    View Slide

  7. 01 ウホーイ図鑑の課題
    ・・・。

    View Slide

  8. 01 ウホーイ図鑑の課題

    View Slide

  9. 01 ウホーイ図鑑の課題

    View Slide

  10. 01 ウホーイ図鑑の課題
    Swift製CLIツールのビルド
    Firebase SDKのビルド

    View Slide

  11. 02 Swift 製 CLIツール の

    ビルド時間改善

    View Slide

  12. 02 Swift 製 CLI ツールのビルド時間改善
    $ swift run -c release xcodegen generate

    View Slide

  13. 02 Swift 製 CLI ツールのビルド時間改善
    $ swift run -c release xcodegen generate
    $ swift build -c release --product xcodegen

    $ .build/release/xcodegen generate

    View Slide

  14. 02 Swift 製 CLI ツールのビルド時間改善
    CLI_TOOLS_PACKAGE_PATH := Tools


    build-cli-tools:

    $(MAKE) build-cli-tool CLI_TOOL_NAME=xcodegen

    $(MAKE) build-cli-tool CLI_TOOL_NAME=mockolo


    build-cli-tool:

    swift build -c release \

    --package-path ${CLI_TOOLS_PACKAGE_PATH} \

    --product ${CLI_TOOL_NAME}
    Makefile

    View Slide

  15. 02 Swift 製 CLI ツールのビルド時間改善
    - uses: actions/[email protected]

    id: cli-tools-cache

    with:

    path: Tools/.build

    key: ${{ runner.os }}-spm-${{ hashFiles(

    '**/Tools/Package.resolved') }}

    restore-keys: ${{ runner.os }}-spm-


    - name: Build CLI tools managed by SwiftPM

    if: steps.cli-tools-cache.outputs.cache-hit != 'true'

    run: make build-cli-tools
    GitHub Actions

    View Slide

  16. 02 Swift 製 CLI ツールのビルド時間改善

    View Slide

  17. 02 Swift 製 CLI ツールのビルド時間改善
    -15m 36s
    -16m 48s

    View Slide

  18. 02 Swift 製 CLI ツールのビルド時間改善

    View Slide

  19. 02 Swift 製 CLI ツールのビルド時間改善
    -5m 57s
    -2m 23s
    -7m 56s

    View Slide

  20. 03 Firebase SDK の

    ビルド時間改善

    View Slide

  21. 03 Firebase SDK のビルド時間改善
    ビルドしない

    View Slide

  22. 03 Firebase SDK のビルド時間改善
    XCFrameworkを

    ダウンロードして使う

    View Slide

  23. 03 Firebase SDK のビルド時間改善

    View Slide

  24. 03 Firebase SDK のビルド時間改善
    FIREBASE_VERSION := 8.8.0


    download-firebase-sdk:

    curl -OL https://github.com/firebase/

    firebase-ios-sdk/releases/

    download/${FIREBASE_VERSION}/

    Firebase.zip

    unzip -o Firebase.zip -d Frameworks/
    Makefile

    View Slide

  25. 03 Firebase SDK のビルド時間改善
    - name: Download Firebase SDK

    run: make download-firebase-sdk
    GitHub Actions

    View Slide

  26. 03 Firebase SDK のビルド時間改善

    View Slide

  27. 03 Firebase SDK のビルド時間改善
    -17m 7s
    -17m 39s

    View Slide

  28. 03 Firebase SDK のビルド時間改善

    View Slide

  29. 03 Firebase SDK のビルド時間改善
    -17m 3s

    View Slide

  30. 04 まとめ

    View Slide

  31. 04 まとめ
    After
    Before

    View Slide

  32. ・CI のステップを分けるとボトルネックを特定しやすい

    ・キャッシュやビルド済のバイナリを有効活用する
    他にいい方法があれば教えてください m(_ _)m
    04 まとめ

    View Slide

  33. 04 まとめ
    Xcode起動時のフェッチが

    高速で終わる
    おまけ
    ビュン

    View Slide