2019年1月17日木曜日

Xcode10 で Xcode Server を使ってみた

概要

Xcode 9 以上から macOS Server なしで Xcode Server が使えるようになりました
今回は Xcode 10 で Server 機能を使ってみました

環境

  • macOS 10.14.2
  • Xcode 10.1 (10B61)

Xcode Server を有効にする

まずは Xcode Server を有効にします
メニューバーから「Xcode」->「Preferences」を選択します
そしてタブから「Server & Bots」を選択しトグルボタンで ON に変更します
管理者権限のパスワードを入力します
「Select Integration User」でユーザを選択
xcode_server1.png

以下のようになれば有効化完了です
xcode_server2.png

ツールバーにもトンカチのようなアイコンが出現します
xcode_server4.png

アイコンを選択すると Server 機能が ON になっていることを確認できます
xcode_server3.png

使ってみる

せっかく Server を有効にしたので使ってみます

Xcode Server を追加する

「Xcode」->「Preferences」を開きます
「Accounts」タブを選択して「+」ボタンを押して追加します
タイプの一覧に Xcode Server があるのでそれを選択します
xcode_server5.png

追加した Xcode Server を選択します
xcode_server6.png

追加した Xcode Server の Integration User の情報を入力して Add します
xcode_server7.png

以下のように一覧に追加されれば OK です
xcode_server8.png

Bot を作成する

Bot を作成することで push したら自動で Xcode Server 上でビルドが走るようにできます

Xcode に戻り左ペインから一番右のタブを選択します
すると追加した Xcode Server があるので右クリックして「Create Bot」を選択します
xcode_server9.png

xcode_server10.png

Bot の名前を決定し動作させる Xcode Server を選択します
xcode_server11.png

プロジェクトとリモートリポジトリの情報を確認し次にいきます
ここで指定したリモートリポジトリから pull してビルドする感じです
xcode_server12.png

ボットのビルド設定をします (今回はそのまま)
xcode_server13.png

ビルドのスケジュールを設定します (今回はそのまま)
xcode_server14.png

テスト対象のデバイスを設定します (今回はそのまま)
xcode_server15.png

証明書の設定をします (今回はそのまま)
xcode_server16.png

ビルドパラメータを設定します (今回はそのまま)
xcode_server17.png

ビルドのトリガーを設定します (今回はそのまま)
xcode_server18.png

これでボットの作成は完了です
integrate が始まっているので Xcode に戻って確認するとビルドが開始されていることが確認できます
xcode_server19.png

完了すると以下のようになります
選択したデバイス上でテストが実行されていることも確認できると思います (結構ビルドが失敗しました、自分が遭遇したエラーは以下のトラブルシューティングを参照してください)
xcode_server21.png

ビルドにかかった時間はだいたい 20 分程度でした
ビルドマシンも Mac Book Air だったので Mac Pro などを使えばもっと速くなると思います
またビルド設定も調整すればもっと速くなると思います
例えばビルドするデバイスを 1 台にすればかなり速くなります

トラブルシューティング

「Creating a bot requires that the project be under source control that is accessible by the server.」という警告が出る場合は git remote add でリモートリポジトリを追加してください
どうやらリモートリポジトリがないと上記の警告が表示されるようです

「Bot Issue for ios-200s-games Bot (error)
Integration #1 of ios-200s-games Bot on xcode-server
Open Integration in Xcode: xcbot://xcode-server/botID/f549b44a3bc6a69d9d3ec2703b012997/integrationID/f549b44a3bc6a69d9d3ec2703b013c9d
Error: ios-200s-games.app encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted. (Underlying error: Lost connection to testmanagerd))
Potentially resolvable by user」が出てビルドが失敗する場合は Bot の証明書がちゃんと設定されているか確認しましょう
xcode_server20.png

最後に

Xcode10 の Server 機能を試してみました
リモートリポジトリの push をトリガーにテストが勝手に走る感じです
いわゆる CI ができるようになります
ビルド+テストを実行するのでテストをしっかりと書いておく必要があります

今回は localhost でサーバもクライアントもやりましたが本来は別々のマシンが好ましいです
サーバでのビルドは結構な負荷になるので注意してください

参考サイト

0 件のコメント:

コメントを投稿