概要
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」でユーザを選択
以下のようになれば有効化完了です
ツールバーにもトンカチのようなアイコンが出現します
アイコンを選択すると Server 機能が ON になっていることを確認できます
使ってみる
せっかく Server を有効にしたので使ってみます
Xcode Server を追加する
「Xcode」->「Preferences」を開きます
「Accounts」タブを選択して「+」ボタンを押して追加します
タイプの一覧に Xcode Server があるのでそれを選択します
追加した Xcode Server を選択します
追加した Xcode Server の Integration User の情報を入力して Add します
以下のように一覧に追加されれば OK です
Bot を作成する
Bot を作成することで push したら自動で Xcode Server 上でビルドが走るようにできます
Xcode に戻り左ペインから一番右のタブを選択します
すると追加した Xcode Server があるので右クリックして「Create Bot」を選択します
Bot の名前を決定し動作させる Xcode Server を選択します
プロジェクトとリモートリポジトリの情報を確認し次にいきます
ここで指定したリモートリポジトリから pull してビルドする感じです
ボットのビルド設定をします (今回はそのまま)
ビルドのスケジュールを設定します (今回はそのまま)
テスト対象のデバイスを設定します (今回はそのまま)
証明書の設定をします (今回はそのまま)
ビルドパラメータを設定します (今回はそのまま)
ビルドのトリガーを設定します (今回はそのまま)
これでボットの作成は完了です
integrate が始まっているので Xcode に戻って確認するとビルドが開始されていることが確認できます
完了すると以下のようになります
選択したデバイス上でテストが実行されていることも確認できると思います (結構ビルドが失敗しました、自分が遭遇したエラーは以下のトラブルシューティングを参照してください)
ビルドにかかった時間はだいたい 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 の証明書がちゃんと設定されているか確認しましょう
最後に
Xcode10 の Server 機能を試してみました
リモートリポジトリの push をトリガーにテストが勝手に走る感じです
いわゆる CI ができるようになります
ビルド+テストを実行するのでテストをしっかりと書いておく必要があります
今回は localhost でサーバもクライアントもやりましたが本来は別々のマシンが好ましいです
サーバでのビルドは結構な負荷になるので注意してください
0 件のコメント:
コメントを投稿