Jenkins!自動建置Unity專案-本地建置

Unity本身有建置APK的API可以使用,而Jenkins扮演的角色就是從外部(不使用Unity編輯器)去呼叫Unity的API來建置專案

用Jenkins建置專案大致可以分為

  • 連接git建置
  • 連接svn建置
  • 本地建置 第一跟第二種都算是屬於遠端建置,多人協作的時候可以使用,第三種的話就是單純使用本機去建置,用到Jenkin的功能很少。

這邊先從本地建置開始弄

本地建置

Unity 編譯apk的Script

由於Jenkins只是呼叫unity的api來建置apk的,因此在unity內還是必須寫一個script來定義這個apk怎麼建置

建立一個Builder

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

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

public class Builder : Editor
{

[MenuItem("Build/APK")]
public static void Build()
{
BuildTarget buildTarget = BuildTarget.Android;
// 切換到Android平台
EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);

List<string> levels = new List<string>();
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
if (!scene.enabled) continue;
// 獲取有效的場景
levels.Add(scene.path);
}

// 打包出 APK 名
string apkName = string.Format("./{0}.apk", "Test");
// 執行打包
string res = BuildPipeline.BuildPlayer(levels.ToArray(), apkName, buildTarget, BuildOptions.None);

AssetDatabase.Refresh();
}
}

這是一個算很簡單的建置,只是單純的建置APK而已,沒有設置其他的參數,有興趣的可以再參考 EditorUserBuildSettings

然後放在Editor下(不然會失敗)

然後到Jenkins上確認unity的plugin有設定好

在jenkins上建置unity專案

選擇新增一個作業

這邊輸入專案名稱,看你要叫什麼

這邊設定這個專案的設定,可以看到有git跟svn的選項
另外比較會用到的是 [參數化建置] 這邊就先忽略

再往下拉可以看到有個建置的選項
選擇unity3d Editor

然後就會跑出這個視窗,它可以選擇你在Global Tool Configuration設定建置用的unity的版本,而我是用unity 2017.4.8來建置

而下面這一欄!!! 【Editor command line arguments】 很重要!!!! 這個就是建置的命令

先介紹一些基本的命令

  • -projectPath :unity要build 的專案的路徑
  • -logFile:Build專案的log的路徑,可以來看輸出的時候出現什麼問題
  • -executeMethos:就是要執行靜態程序,也就是剛剛我們scripts上的Builder.Build
  • -output:輸出的路徑

還有其他命令參數可以參考:Unity3D游戏开发之“unity3D命令行参数”

那綜合以上,最終得到的結果是:

1
-projectPath "C:\Users\User\Documents\TestJenkins\Jenkin" -logFile "C:\Users\User\Documents\TestJenkins\Jenkin/unity3d_editor.log" -quit -batchmode -nographics -executeMethod Builder.Build -output "C:\Users\User\Documents\TestJenkins\Jenkin/test.exe"

輸入在Editor command line arguments內後按Apply就好了

設定完後就可以跑去建置了

因為#1是我建失敗的等待#2跑完,就會看到你的成品了!!



# 常跑出來的問題

沒有設定android sdk路徑

LogFile也可以在Jenkins上看






參考
https://dev.twsiyuan.com/2016/04/continuous-integration-with-unity-using-jenkins.html http://hoseex.blogspot.com/2017/12/jenkinsunity3d.html https://blog.csdn.net/cgy56191948/article/details/81263982 https://blog.csdn.net/liqiangeastsun/article/details/78867309 https://dotblogs.com.tw/echo/2018/03/22/jenkins_plugin_git