【Jenkins】ipaを自動生成する③(mac/Jenkins/Unity/GitHub/DeployGate)
概要
Jenkinsビルド→ipa作成までを自動で行えるようにする
今回は、Xcodeプロジェクト→ipa作成まで
Jenkinsのセットアップ~Unityビルドは前回までの記事を参照
peachtea-tom.hatenablog.com
peachtea-tom.hatenablog.com
環境
Unity2019.3.13f1
Xcode 11.4.1
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>アプリのBundleID</key> <string>プロビジョニングファイルの名前</string> </dict> <key>signingCertificate</key> <string>証明書名</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/> <key>teamID</key> <string>チームID</string> <key>thinning</key> <string><none></string> </dict> </plist>
※バンドルIDやプロビジョニングの名前は適宜変更を。
BuildSettings/iOS/DevelopmentExportOptions.plist
に保存しておく。
Xcodeビルド(ipa生成)
前回作成したbuild.shに下記を追加します。
UNITY_APP_PATH="/Applications/Unity/Hub/Editor/2019.3.13f1/Unity.app/Contents/MacOS/Unity" PROJECT_PATH=$WORKSPACE UNITY_EDITOR_LOG_PATH=$WORKSPACE/build.log $UNITY_APP_PATH -batchmode -username ここにユーザ名 -password ここにパスワード -quit -logFile $UNITY_EDITOR_LOG_PATH -projectPath $PROJECT_PATH -executeMethod BuildROM.BatchBuild cat $UNITY_EDITOR_LOG_PATH #------ここからが追加分------------------ # Xcode Projectのパス XCODE_PROJECT=$WORKSPACE/Product/Unity-iPhone.xcodeproj # アーカイブ先 ARCHIVE_PATH=$WORKSPACE/Product/rom.xcarchive # ipa配置場所 IPA_PATH=$WORKSPACE/Product/ # plistのパス XCODE_EXPORT_OPTION_PLIST_PATH=${WORKSPACE}/BuildSettings/iOS/DevelopmentExportOptions.plist # キーチェーンをアンロックしておく security -v unlock-keychain -p MACのパスワード #clean xcodebuild clean -project $XCODE_PROJECT -target Unity-iPhone -configuration Release #archive xcodebuild -project $XCODE_PROJECT -scheme Unity-iPhone archive -archivePath $ARCHIVE_PATH -configuration Release #export xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath $IPA_PATH -exportOptionsPlist $XCODE_EXPORT_OPTION_PLIST_PATH
補足
cocoapodsを使用する場合は、xcodeprojではなくxcworkspaceを使うことになります。
※Facebook SDKを導入する場合等はこちらのケースになります。
xcworkspaceを使用する場合、build.shを次のように変更する必要があります
# Unity-iPhone.xcodeproj => Unity-iPhone.xcworkspace XCODE_PROJECT=$WORKSPACE/Product/Unity-iPhone.xcworkspace # -project => -workspace xcodebuild clean -workspace $XCODE_PROJECT -target Unity-iPhone -configuration Release # -project => -workspace xcodebuild -workspace $XCODE_PROJECT -scheme Unity-iPhone archive -archivePath $ARCHIVE_PATH -configuration Release
おまけ(DeployGate)
①~③までお付き合いありがとうございました。
これまでのことを一通り行うことで、Jenkinsビルド→ipa生成までが出来るようになります。
最後におまけで、DeployGateにアップするコマンドを記載しておきます。
curl \ -H "Authorization: token アプリトークン" \ -F "file=@${WORKSPACE}/Product/Unity-iPhone.ipa" \ -F "message=jenkins upload" \ "https://deploygate.com/api/users/ユーザ名/apps"
アプリトークンはDeployGateのアカウントページから確認してください。
こちらのシェルスクリプトをbuild.shの最後に追加 or Jenkinsのシェル実行に追加することで
ビルドされたipaをDeployGateにアップするまでを自動で行うことが出来ます。
ここまで設定しておけば、Jenkinsのビルドを押すだけでDeployGateにアップロードまでが自動化されるので端末確認までが非常に楽になると思います。