署名なしでiOSアプリのビルド&単体テスト〜AppCenter編〜


「Visual Studio App Center」とは?

Microsoftが提供しているクラウドのCI/CDサービスです。
基本的な機能は無料で使用できます。

(以下「App Center」と呼ぶ)

環境

  • Xcode:10.1 (10B61)
  • Swift:4.2.1
  • Carthage:0.31.2
  • CocoaPods:1.6.0.beta.2

準備

スキーマのコンテナをワークスペースに変更(ワークスペース使用時のみ)

CocoaPodsなどで *.xcworkspace を使っている場合のみ必要な設定です。

Xcodeを起動 > Product > Scheme > Manage Schemes…
対象SchemeのContainerをWorkspaceに変更

CocoaPodsのインストールスクリプトの実装(β版のCocoaPods使用時のみ)

App Centerの環境は基本的に最新のCocoaPodsがインストールされています。
β版のCocoaPodsを使用したい場合はスクリプトを手動で実装する必要があります。

appcenter-post-clone.sh という名前でプロジェクトのルートフォルダに配置することで、ソースのクローン直後に自動で実行されます。

appcenter-post-clone.sh
#!/usr/bin/env bash

# β版のCocoaPodsを使う
# ∵Xcode 10×CocoaPods 1.5.3の組み合わせだとコード署名でビルドエラーが発生するため
sudo gem install cocoapods --pre

App Centerでビルドの設定

App Centerにログインしてプロジェクトを作成します。
https://appcenter.ms/

プロジェクトの作成やGitリポジトリの連携については割愛します。
私はAzure DevOpsのReposにあるGitリポジトリと連携させています。

左のツリーで「Build」を選択
対象ブランチを選択

ビルド設定

私は以下のように設定し、ビルドと単体テストを実行させています。
デプロイまで行う場合は署名などの設定をONにしてください。

項目 備考
Project/Workspace {プロジェクト名}.xcworkspace 対象プロジェクト or ワークスペース
Shared Scheme {対象スキーマ} 選択できるスキーマがないと「No Scheme」エラーとなる
Xcode version 10.1 対象Xcodeのバージョン。Swiftのバージョンと紐付いている
Build scripts Post-clone 対象スクリプト。所定の位置に配置するだけでこちらに表示される
Build frequency Build this branch on every push プッシュ時に自動でビルドする場合は上、手動は下を選択する
Automatically increment build number OFF ビルド番号を自動でインクリメントするか
Run XCTest tests ON XCTestを実行するか
Environment variables OFF 環境変数を使用するか
Sign builds OFF 署名してビルドするか。UIテストを実行する場合は必須
Test on a real device OFF 実機でテストを実施するか。 有料
Distribute builds OFF アプリを配布するか
Build status badge ON ビルドステータスバッジを使用するか

おわりに

これで「ソースをプッシュ→ビルド→単体テスト」を自動化できました!
あとはこれに続けて「→デプロイ」まで自動化できるようにしたいです。

App Centerによるビルドでは、CocoaPodsやCarthageで管理しているライブラリを自動でインストールしてくれるため、簡単な設定のみでビルドできて非常に便利です。

参考リンク