Edited at

署名なしで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で管理しているライブラリを自動でインストールしてくれるため、簡単な設定のみでビルドできて非常に便利です。


参考リンク