Azure PipelineでSwift Package Manager管理のライブラリのソースコードをキャッシュする

8189 ワード

Azure Pipelineを使ってCIビルドしていて、Swift Package Manager(SPM)管理のライブラリをキャッシュしたいと考えていました。XCFrameworkを使わない限りビルド時間は短縮できなかったのですが、備忘録としてライブラリのソースコードのキャッシュ方法を残します。

注意事項

SPMではソースコードのキャッシュはできるものの、ビルドしたバイナリをキャッシュすることが現在のところできません。

  • 本ビルド時間を削減するのであれば、ビルド済みバイナリのキャッシュが効果的です[1]

    • Carthage (>= 0.37.0)などで依存ライブラリのXCFrameworkをビルドして、S3やCloud Storageなどから取得できるようにします。
    • もしくは、ライブラリ提供元がXCFrameworkを提供していれば、それらを利用します。
      • firebase-ios-sdkなどが該当します。
  • Azure pipelineの無料枠でざっと検証するため、Microsoftでホストされているビルド用エージェントではなく、self-hostedエージェントを使用しています[2]。昨年夏あたりに、新規組織での無料枠が許可制になったためです[3]。self-hostedエージェントではこの制限の影響を受けないため、self-hostedエージェントを利用しました。

サンプルコード

依存ライブラリにfirebase-ios-sdkのみ追加していて、アプリとしてはHello World表示するのみとなっています。