くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Visual Studio Team Services で Xamarin.iOS をビルドする!

Xamarin.iOS を VSTS でビルドする

VSTS とは

VSTS とは、 Microsoft の提供している開発者が開発を効率的に行えるようにするサービスです。

VSTS に含まれている機能

アジャイル開発とかをしやすくするための機能がたくさん含まれてます。 今回は、VSTS 自体についての記事ではないので詳しくは、ぐぐってください。

  • 継続的インテグレーション
  • バックログ、タスク管理

やっていく

VSTS で Xamarin.iOS のプロジェクトをビルドするための ビルド構成を作る

VSTS で Xamarin.iOS をビルドするときに、 Xamarin.Android のプロジェクトが混じっているとビルドに失敗します。 ということで、新しく、 Xamarin.iOSをビルド専用のビルド構成 を作ります。

Visual Studio で Xamarin,iOS の含まれているソリューションを開き、構成マネージャーを開いて新規構成を選ぶ

この時に、設定のコピー元は、 Release を選んだ方がいいと思います。

Xamarin.iOS のビルドに必要なプロジェクト以外のチェックを外して、 iOS Release という名前で保存する

自分の場合、こんな感じになりました。

これを、アクティブソリューションプラットフォームを iPhone, iPhone Simulator と2つ切り替えて設定します。

Github との連携設定

今回は、 Github においてある Visual Studio の Xamarin Template で作ったまんまの コードをビルドしていきたいと思います。

Github との連携するために Github による VSTS に対する認証が必要です。

ここで、 上部にあるツールバーの一番右に配置してある歯車のアイコンにマウスをホバーさせると出てくるメニュー の中から Services を選択します。

Services の画面

New Service Endpoint の部分をクリックし、 出てくるドロップダウンボックスから Github を選択します。

すると、Github との連携の設定画面が出てきます。 Authorize をクリックしてください。

出てきた、 Github との連携の設定画面

ID/Pass を入力して、認証してください。 Github との認証が完了した画面

iOS アプリをビルドするために手持ちの Mac マシンに Build Agent をインストールしてく

現在、 VSTS で提供されている ビルドマシンは、以下の3種類あります。
ビルドマシンは、 VSTS でアプリ等をビルドするタスクが発行されたときにビルドをするためのマシンです。

  • Hosted (メイン, Windows機)
  • Hosted Linux Preview (プレビュー, Linux)
  • Hosted VS 2017 (プレビュー, Windows)

名前を見ればどのようなマシンかはわかるかと思います。
まぁ、プレビューなので選択しは実質1つだけですが。

iOS アプリのビルドをするためには、 Mac マシンが必要

iOS アプリをビルドするためには、 Apple の利用規約の関係で Mac マシン上でビルドしなければいけません。
ところが、VSTS でビルドのために使えるマシンは、上で書いてあるように、 Windows (一応、Linux)しかありません。 Mac は使えない感じです。

どうすれば、 iOS アプリをビルドできるでしょうか?

ちゃんと、やり方は用意されています。
手元にある Mac マシンをビルドするために使います。具体的には、 VSTS で iOS アプリのビルドするタスクが呼び出されたら、 VSTS の Build Agent がインストールされたマシンが代わりにビルドを行います。

Build Agent ... 知らない子ですね。

Build Agent とは、

Build Agent とは、 Hosted ビルドマシンでは無理な場合(今回のように Mac が必要なときや、Hosted マシンの1か月の利用時間制限を使い切ってるとき)に設定して使うときに使うソフトウェア?です。

VSTS のサイトから無料で入手することができます。

今回は、このソフトウェアを Mac マシンにインストールしていきます。
(Mac Book Air をビルドマシンにしてるから、Mac mini ほしい...)

www.amazon.co.jp

Build Agent を入手する

Build Agent は上でも書いた通り VSTS のサイトから入手することができます。 具体的には、 設定画面Agent QueueDownload Agent のボタンからダウンロードで入手できます。

Build Agent を Mac へ設定している様子を動画で撮影してみました。

Build Agent にした Mac マシンでビルドするための証明書を作る

iOS アプリをビルドするためには、 アプリパッケージを作るための、証明書が必要です。 しかし、証明書を作るためには、 XCode を利用して作られます。つまり、Xamarin Studio や Visual Studio では作成できない。 また、証明書の判別は、 Bundle identifier を利用して行われています。
ということで、

Xcode でダミーのプロジェクトを作成し、 Xamarin.iOS のプロジェクトの Bundle identifier と同じにして証明書を作ってあげる必要があります。 証明書の作成は、 XCode で、 Bundle identifier を同じにした 適当な iOS アプリをシミュレーターで動かすだけでおkです。

今回の場合は、 Build Agent に設定してあるマシンでも証明書を作らなければいけないので、下準備として、

Build Agent に設定してある Mac マシンの Xcode 上で Xamarin.iOS の Bundle identifier な証明書を作成する必要があります

新しいビルド定義を作成する

VSTS では、ビルド定義に従って、ビルドを行っていきます。まず、ビルド定義を作成していきます。

ダッシュボードにアクセス

ダッシュボードにアクセスするところから始めていきます。

Build && Release タブへ移動

継続的インテグレーションやリリースの管理はこのタブで行います。
すでに、 Android のビルド定義が1つされている感じです。

新しいビルド定義の作成

+New の部分をクリックして、新しいビルド定義を作成します。

新しいビルド定義ができた!

Github にある ビルドしたリポジトリを指定する

VSTS 自体にもコードを管理する機能がついています。しかし、ほかの ツール等への移行をしようとしたときに辛みが出てくるので、今回は、 Github でホスティングしているリポジトリをビルドしていきます。

Github にある リポジトリやブランチの選択

Xamarin Component Restore のタスクを削除

今回ビルドするプロジェクトでは、 Xamarin Component は使ってないため、タスクを削除します。

Xamarin.iOS のビルド設定

たぶん、一番メインのタスクです。

ビルドするソリューションの選択

ビルドするを選択するためにファイルピッカーを開いて設定していきます。

Xamarin Test Cloud のタスクを削除

Xamarin Test Cloud は様々なデバイスでのUIテストを行ってくれるものですが、今回は使用しないので削除します。

設定が完了

これで、ほとんどの設定が完了しました。

それでは、、、

設定を保存してから

ビルドするマシンを先ほど設定した Mac に変更して、

ビルド設定を iOS Release に変更、、、

緊張の...

ビルド...

成功!!

Xamarin.Android を VSTS でビルドしたい場合は、こちらを見てね!

goo.gl

参考情報

https://blogs.msdn.microsoft.com/chomado/xamarin/vsts-xamarin-hockeyapp-bookmarks/

Build Xamarin apps - Azure Pipelines | Microsoft Docs

Xamarin Blog | An open source mobile platform for building Android, iOS, macOS, watchOS, and tvOS apps with .NET.

24 時間自宅で動かせる Mac 開発機がほしい!!!!!!!!!!!!!

www.amazon.co.jp