JenkinsでXCodeプロジェクトのテストアプリをDeployGateにアップロードするように実装したのでメモ
環境準備
Macを使用。
以下のアプリをビルドするマシンにインストールし、セットアップを完了させる
・Jenkins
・XCode、及びcommand line tools
・DeployGateコマンドラインツール
DeployGateにログイン済みであること、ターミナルで、「dg --version」「xcodebuild -version」を入れてバージョンが出ること、Jenkinsのセットアップが済んでいることが前提になります。
DeployGateコマンドラインツール ドキュメント
command line toolsはApple Developerからインストールしてください
Jenkinsはこちら
ExportOptions.plist作成
まず、DeployGateにアップロードするIPAファイルを作るためには、Archiveを実行する必要があります。
command line toolsでAriciveを作成する場合、必ず「ExportOptions.plist」を作成する必要があります。
ExportOptions.plistはxcodeprojがあるフォルダの直下に作成してください。
例)「~/Documents/WorkSpace」にTestという名前のxcodeprojを作成した場合、ExportOptions.plistは「WorkSpace」の中に置く
ExportOptions.plist作成の仕方は以下のとおりです。
・予めXCodeのツール上でAriciveを実行、OrganizerでAd Hocを実行し、生成されるファイルの中にある「ExportOptions.plist」
・ExportOptions.plistを自作する
→必要なのは「provisioningProfiles」の部分です。
以下、実際に作成したExportOptions.plistの中身です。○○○○の部分を自分のプロジェクトに合わせてもらえればうまくいくはずです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>destination</key>
<string>export</string>
<key>method</key>
<string>ad-hoc</string>
<key>provisioningProfiles</key>
<dict>
<key>○○○○</key>
<string>○○○○</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>○○○○</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
Job(シェルスクリプト作成)
JenkinsのJobを作成し、以下のシェルスクリプトを記述します。
#!/bin/sh
# プロビジョニングファイルを移行する
# 以下、WorkSpaceフォルダの中にkeyという名前のフォルダがあり、そこでプロビジョニングファイルを管理している場合
cd ~/Documents/WorkSpace/key
rm -f ~/Library/MobileDevice/Provisioning\ Profiles/*
cp *.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/
# プロジェクトフォルダに移行
# Documentsフォルダに、WorkSpaceという名前のフォルダを作り、その下にXCodeのプロジェクトがあるという想定)
cd ~/Documents/WorkSpace
# 作業ディレクトリ作成
mkdir build
# CleanしてArchive作成(Debugを作成)
xcodebuild -workspace ○○.xcodeproj/project.xcworkspace \
-scheme ○○ \
-configuration Debug \
clean archive \
-archivePath ./build/build
# Exportしてipa作成
xcodebuild -exportArchive \
-archivePath ./build/build.xcarchive \
-exportPath ./build \
-exportOptionsPlist exportOptions.plist
# Deploygateにupload
dg deploy ./build/○○.ipa
「○○.xcodeproj」はXCodeのプロジェクト名、schemeは作成したscheme名を入れます。
最後、dg deployで作成したipaファイルをアップロードして完了です。
現状の問題点
プロビジョニングファイルを更新すると、XCodeでプロビジョニングを設定しないと更新されないので、その部分を何かしらの形で変更する必要があります。
現在、その方法を調査中
解決。XCode経由でダウンロードしたプロビジョニングファイルが悪さしていたので、デフォルトでプロビジョニングファイルを格納しているフォルダの中を全部消して、差し替えるようにした。