LoginSignup
7
8

More than 5 years have passed since last update.

【Mac】Jenkins Pluginを使わずにipa自動ビルド環境を構築する

Last updated at Posted at 2017-10-31

プラグインなしで上手くいったのでメモ
個人で使う場合はこれで十分
業務で使う場合はバージョン毎に出力やサーバーへアップロード等必要だな〜
(各種設定ファイル調整も)

使用環境
・Unity2017.0.0f3

前提条件
・手動でipaビルドまでできる環境が揃っていること
・HomeBrewをインストールしていること
・JDKインストール済み

Jenkins構築

Jenkinsインストール

brew install jenkins

起動コマンド
launchctl start homebrew.mxcl.jenkins
終了コマンド
launchctl stop homebrew.mxcl.jenkins

<参考>
https://qiita.com/makoto_kw/items/cbe93d4ebbc35f3b43fd

シェルコマンド作成、実行

プロジェクトフォルダ階層想定
[ROOT]
LAutoBuildProject(Unityプロジェクトルート、Assetsフォルダあり)
Lbuild_archive(ipaビルド保存先)
LSettingFiles(各種設定ファイル保存先)
LTmp(一時フォルダ)

ファイル用意

・手動時のビルド同様、BuildSettingsに追加されているシーンを含めてビルド

BuildClass.cs
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;

public class BuildClass
{

    /// <summary>
    /// iOSのビルドを行います
    /// </summary>
    public static void BuildiOS()
    {
        string errorMessage = BuildPipeline.BuildPlayer(
            GetSceneList().ToArray(),
            "[Rootフォルダパス]/XCode",
            BuildTarget.iOS,
            BuildOptions.None
        );

        if(!string.IsNullOrEmpty(errorMessage)){
            Debug.LogError("[Error!]" + "error");
        } else {
            Debug.Log("[Success!]");
        }
    }

    private static List<string> GetSceneList() {
        List<string> levels = new List<string>();
        foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes) {
            if (scene.enabled) {
                levels.Add(scene.path);
            }
        }
        return levels;
    }
}

・[Root]/SettingFilesにplistとプロビジョニングプロファイルを配置

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>method</key>
    <string>app-store</string>
    <key>uploadBitcode</key>
    <false/>
    <key>uploadSymbols</key>
    <true/>
</dict>
</plist>

各種ディレクトリパス作成

・必要なPathを設定

# プロジェクトルート buildPathRoot
PROJECT_ROOT_PATH="[ROOT]パス";
# UNITYプロジェクトパス
UNITY_PROJECT_PATH="${PROJECT_ROOT_PATH}/AutoBuildProject"
# IPA出力フォルダ
ARCHIVE_FILE_PATH="${PROJECT_ROOT_PATH}/build_archive";
# IPA出力設定フォルダ
IOS_SETTING_PATH="${PROJECT_ROOT_PATH}/SettingFiles";
# WORKフォルダ
WORK_FOLDER="${PROJECT_ROOT_PATH}/Tmp";

Gitリポジトリ更新

・ローカルを最新に更新(Git連携なしならスキップ)

# ===== Git Pull =====
cd "${UNITY_PROJECT_PATH}"
git pull

Unity-iOSビルド

# ===== Unity IOS Build =====
/Applications/Unity/Unity.app/Contents/MacOS/Unity \
    -batchmode \
    -quit \
    -logFile "${WORK_FOLDER}/build.log" \
    -projectPath "${UNITY_PROJECT_PATH}" \
    -executeMethod BuildClass.BuildiOS

XCodeビルド

・チームコードはGeneral>Signingに書かれている10桁の文字列
・プロビジョニングファイルを「IOS_SETTING_PATH」のパスへ保存
 (ファイル名はAutoDebugSettingで変更したい場合は以下のコードを編集)

# ===== XCode Build =====
# IOS_TEAM_CODE(10桁)
TEAM_CODE="[チームコード]"
# XCode Export Folder Name
XCODE_BUILD_FOLDER="XCode"
cd "${PROJECT_ROOT_PATH}/${XCODE_BUILD_FOLDER}"
builds=()
for file in *; do
    builds=("${file}" "${builds[@]}")
done

# Scheme
TARGET="Unity-iPhone"
# プロビジョニングプロファイル
PROFILE_PATH="${settingFiles}/AutoDebugSetting.mobileprovision"

if [ ! -d ${ARCHIVE_FILE_PATH} ]; then
    mkdir "${ARCHIVE_FILE_PATH}"
fi

xcodebuild -project "${PROJECT_ROOT_PATH}/${XCODE_BUILD_FOLDER}/${TARGET}.xcodeproj" \
               -scheme "${TARGET}" \
               archive \
               -archivePath "${ARCHIVE_FILE_PATH}/archive" \
               DEVELOPMENT_TEAM=${TEAM_CODE}

# xcodeプロジェクトのビルドに失敗した場合
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
  cat "can not build app file"
  exit $EXIT_CODE
fi

IPA Export

xcodebuild \
    -exportArchive -archivePath "${ARCHIVE_FILE_PATH}/archive.xcarchive" \
    -exportPath "${ARCHIVE_FILE_PATH}" \
    -exportOptionsPlist "${IOS_SETTING_PATH}/exportOptions.plist"

# ipaへの変換に失敗した場合
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
  cat "can not build ipa file"
  exit $EXIT_CODE
fi

<参考URL>
OS XにJenkinsをHomebrewでセットアップする
コマンドラインからUnityのビルドを走らせる。 -基礎編-
Jenkins Pluginに頼らずシェルだけでJobを構築する(ios開発アプリ転送編)
UnityのiOSアプリをアーカイブまでJenkinsで自動化した話
xcodebuildでipa作成 -exportOptionsPlist対応版

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8