文章目錄
- 一、前言
- 二、Jenkins簡介
- 三、Jenkins的下載與安裝
- 1、JDK下載與安裝
- 2、Jenkins下載
- 3、Jenkins安裝
- 4、Jenkins初始化
- 四、Jenkins的基本操作
- 1、關閉Jenkins
- 1.1、方式一:暴力殺行程(不推薦)
- 1.2、方式二:以管理員身份執行 net stop jenkins
- 1.3、方式三:通過jenkins.exe來關閉,jenkins stop
- 2、啟動Jenkins
- 2.1、方式一:以管理員身份執行 net start jenkins
- 2.2、方式二:通過jenkins.exe來啟動,jenkins start
- 3、修改埠號
- 4、新建賬號
- 5、修改密碼
- 6、安裝插件
- 6.1、方式一:通過Manage Plugins安裝(需要科學上網)
- 6.2、方式二:CLI命令列安裝(需要科學上網)
- 6.3、方式三:離線環境安裝插件
- 7、創建并執行任務:Hello World
- 8、執行帶引數的任務
- 9、執行python任務
- 10、周期性觸發執行任務
- 五、實戰:Unity + Jenkins
- 1、Unity Demo工程
- 1.1、創建Demo工程
- 1.2、切換Android平臺
- 1.3、設定JDK、Android SDK、Gradle
- 1.4、設定包名
- 1.5、測驗打包
- 2、撰寫Editor打包工具
- 2.1、Editor打包工具代碼
- 2.2、執行Editor打包工具選單
- 3、命令列呼叫Unity靜態函式:打包函式
- 3.1、Unity命令列模式
- 3.2、命令引數解釋
- 3.3、批處理腳本
- 3.4、Unity打包工具接收命令列引數
- 4、Jenkins呼叫bat腳本
- 5、拓展:python加強版腳本
- 六、完畢
一、前言
嗨,大家好,我是新發,
前幾天我寫了一篇文章,【游戲開發進階】教你自制離線Maven倉庫,實作Unity離線環境使用Gradle打包(Unity | Android | 谷歌 | Gradle),里面我提到了Unity使用Jenkins實作自動化打包,

不過那篇文章中我只是一筆帶過,沒有細說具體操作流程,今天,我就專門寫一篇關于Unity通過Jenkins實作自動化打包的教程吧~
特別說明:
我的電腦系統環境是Windows 10,所以下面的操作環境都是在Windows 10系統下的,
二、Jenkins簡介
相信很多人都知道Jenkins,不過為了照顧萌新,我這里還是簡單說下Jenkins是什么,
Jenkins官網:https://www.jenkins.io/
Jenkins是一個開源軟體專案,是基于Java開發的一個持續集成工具(CI),具有友好的操作界面,主要用于持續、自動的構建/測驗軟體專案、監控外部任務的運行,它可以在Tomcat等流行的servlet容器中運行,也可獨立運行,通常與版本管理工具(SCM)、構建工具結合使用,常用的版本控制工具有SVN、GIT,構建工具有Maven、Ant、Gradle,
注:
什么是集成?
代碼由編譯、發布和測驗、直到上線的一個程序,
什么是持續集成?
高效的、持續性的不斷迭代代碼的集成作業,
這樣講好像也不是很直觀,沒關系,它就是一個工具,我們學會使用它就好,下面我來一步步教大家如何使用Jenkins,
三、Jenkins的下載與安裝
1、JDK下載與安裝
因為Jenkins是基于Java開發的,要運行Jenkins需要Java環境,即JDK,所以我們需要先安裝下JDK,
JDK下載:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
根據你的系統環境選擇對應的JDK下載,

下載下來后雙擊即可執行安裝,安裝程序沒什么,這里就不啰嗦了,
安裝完畢后,配置一下JDK的 環境變數,
最后在命令列中輸入java -version,如果能正常輸出版本號,則說明JDK環境弄好了,

2、Jenkins下載
進入Jenkins官網:https://www.jenkins.io/
點擊Download,

根據你的系統和環境選擇對應的安裝包,因為我是Windows系統,所以我下載Windows版的安裝包,

下載下來是一個msi檔案,

3、Jenkins安裝
雙擊jenkins.msi,執行安裝,設定一下安裝路徑,

選擇Run service as LocalSystem(即使用本地系統賬號)

設定埠號,比如我設定為8075,然后點擊Test Port按鈕測驗一下埠有沒有被占用,

確認埠沒被占用后,點擊Next,

設定JDK所在的路徑,

繼續Next,

點擊Install開始安裝,

注意,安裝程序中可能會彈出360提醒,選擇允許即可,
完整完畢,

4、Jenkins初始化
上面安裝完畢后會自動啟動Jenkins服務,我們可以在任務管理器中看到一個Java的行程,它就是Jenkins的服務行程,

我們在瀏覽器中訪問 http://localhost:8075,此時會顯示需要解鎖Jenkins,如下

我們找到這個initialAdminPassword檔案,使用文本編輯器打開它,

可以看到里面是一串密碼,我們復制它,

回到瀏覽器頁面中,在管理員密碼欄中粘貼剛剛的密碼,然后點擊繼續,

接下來是插件安裝界面,因為Jenkins插件的下載需要翻墻,所以如果你可以科學上網,則點擊安裝推薦的插件,當然也可以先不安裝插件,后續有需要再安裝對應的插件即可,

如果是離線環境(比如內網環境),則點擊跳過插件安裝(下文我會教如何在離線環境下安裝插件),

接著創建管理員賬號,

完成,進入Jenkins主頁,

四、Jenkins的基本操作
1、關閉Jenkins
1.1、方式一:暴力殺行程(不推薦)
上面我們說到,在任務管理器中可以看到一個Java行程,它就是Jenkins的服務行程,

如果你直接暴力殺掉這個Java行程,那么Jenkins也就關閉了,不過不建議這么做,
1.2、方式二:以管理員身份執行 net stop jenkins
以管理員身份運行命令net stop jenkins,如下(我是使用管理員身份運行PowerShell來執行命令的)

注意,如果你不是以管理員身份執行上面的命令,則會提示
發生系統錯誤 5
如下(普通賬號權限下通過cmd執行命令)
如何以管理員身份運行cmd?
進入cmd所在目錄:
C:\Users\linxinfa\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools
右鍵命令提示符,點擊以管理員身份運行即可,
如果覺得麻煩的話,也可以直接在系統的開始選單那里直接以管理員身份運行PowerShell,
1.3、方式三:通過jenkins.exe來關閉,jenkins stop
進入Jenkins的安裝目錄,如下,

在地址欄輸入cmd,然后執行jenkins stop,如下,與上面的效果是一樣的,

2、啟動Jenkins
2.1、方式一:以管理員身份執行 net start jenkins
以管理員身份執行命令net start jenkins,如下

2.2、方式二:通過jenkins.exe來啟動,jenkins start
進入Jenkins的安裝目錄,

執行命令jenkins start,如下

如果想重啟Jenkins,則執行jenkins restart,如下

3、修改埠號
先關閉Jenkins,進入Jenkins的安裝目錄,可以看到里面有一個jenkins.xml,使用文本編輯器打開它,

把--httpPort的埠改為別的,比如我改成8076,

重新啟動Jenkins服務,在瀏覽器中使用新的埠進行測驗,能夠正常訪問則說明埠修改成功了,

4、新建賬號
Jenkins可能需要多人登錄,我們可以新建一些賬號供其他人登錄,
在Jenkins主頁的左側欄中點擊Manage Jenkins,

接著點擊Manager Users,

然后點擊Create User,

輸入要創建的新賬號的賬號密碼,點擊創建即可,

創建成功,可以看到多了一個賬號了,

我們可以退出當前賬號,使用這個新賬號登錄,

登錄成功,

5、修改密碼
點擊賬號的齒輪按鈕,

修改Password,點擊Save即可,

6、安裝插件
6.1、方式一:通過Manage Plugins安裝(需要科學上網)
在Manage Jenkins頁面中,點擊Manage Plugins,

搜索需要的插件名稱進行安裝即可(需要能科學上網才行)

6.2、方式二:CLI命令列安裝(需要科學上網)
Jenkins CLI就是Jenkins的命令列工具,類似于MacOS的終端,
我們可以在Jenkins的Manage Jenkins頁面中看到Jenkins CLI,點擊進入,

點擊jenkins-cli.jar,

把下載下來的jenkins-cli.jar放到Jenkins安裝目錄中,

接著我們就可以通過命令來操作Jenkins了,具體命令引數可以看Jenkins CLI頁面,

我們可以看到安裝插件的引數是install-plugin,

點擊去可以看到具體的使用方法,

我們進入jenkins-cli.jar所在的目錄,通過下面的命令即可安裝插件,(注意埠根據你的Jenkins的實際埠號而定)
java -jar jenkins-cli.jar -s http://localhost:8075/ 插件名
如果不清楚插件名可以上Jenkins的插件官網查看:https://plugins.jenkins.io/

以Maven Integration插件為例,搜索Maven Integration,點擊搜索到的插件,

點擊Releases頁面,即可看到,插件名就是maven-plugin:3.12,

對應的插件安裝命令就是:
java -jar jenkins-cli.jar -s http://localhost:8075/ maven-plugin:3.12
注意,你可能會提示
ERROR: anonymous is missing the Overall/Read permission
我們需要在Configure Global Security中勾選專案矩陣授權策略,給Anonymous添加Administer權限即可,

6.3、方式三:離線環境安裝插件
上面兩種方式都需要聯網,而我們有可能需要把Jenkins部署在離線環境的電腦上(比如內網),這個時候就只能通過離線安裝的方式了,
這個時候,我們需要先在有網路(能科學上網)的電腦上下載安裝插件,
安裝好的插件可以在這個目錄中找到:
C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\.jenkins\plugins

將其拷貝到內網機的相同路徑中,然后重啟Jenkins即可,
7、創建并執行任務:Hello World
我以創建一個HelloWorld任務為例來演示一下,
點擊New Item,

輸入任務名,比如HelloWorld,點擊Freesytyle project,點擊OK,

輸入任務描述,

Build選項選擇Execute Windows batch command(即批處理,也就是我們說的bat)

然后在Command中撰寫我們要執行的bat命令,比如
echo "Hello World"
如下

最后點擊保存,

這樣我們的任務就創建成功了,我們可以點擊Build Now來執行這個任務,

按F5重繪一下瀏覽器,可以看到任務執行的進度,

執行完后我們可以查看對應的日志,

從日志中我們可以看到我們輸出的Hello World,

8、執行帶引數的任務
有時候我們需要創建帶引數的任務,
我們勾選This project is parameterized,然后點擊Add Parameter,可以看到它提供了多種型別的引數,

我以選擇項引數為例,

分別填寫引數名、選項(每個選項一行)、描述,

撰寫bat命令,

點擊Build with Parameters,然后設定好引數,

最后點擊Build,

執行完畢可以看到輸出日志,結果正確,

9、執行python任務
我們看到任務Build中并沒有Phython的選項,

但我們又想要讓Jenkins可以執行Python,怎么辦呢?很簡單,在bat中call python就好啦,

其中python代碼如下:
print("Hello, I am python")
最后執行任務,輸出日志如下,結果正確,

10、周期性觸發執行任務
有時候我們需要周期性地執行任務,比如每天8點觸發一次執行任務,或者每隔30分鐘觸發一次執行任務,
在Build Triggers(觸發器)中勾選Build periodically,

然后在Schedule中撰寫規則,
格式:
MINUTE HOUR DOM MONTH DOW
| 欄位 | 說明 | 取值范圍 |
|---|---|---|
| MINUTE | 分鐘 | 0~59 |
| HOUR | 小時 | 0~23 |
| DOM | 一個月中的第幾天 | 1~31 |
| MONTH | 月 | 1~12 |
| DOW | 星期 | 0~7(0和7代表的都是周日) |
語法:
*:匹配范圍內所有值,例:* * * * *
M-N:匹配M~N范圍內所有值,例:10-30 * * * *
M-N/X:在指定M~N范圍內每隔X構建一次,例:10-30/5 * * * *
*/X:整個有效區間內每隔X構建一次,例:*/30 * * * *
A,B,...,Z:匹配多個值,例:10,20,30 * * * *
關于符號H:
為了在系統中生成定時任務,符號H(代表Hash,后面用散列代替)應該用在可能用到的地方,例如:為十幾個日常任務配置0 0 * * *將會在午夜產生較大峰值,相比之下,配置H H * * *仍將每天一次執行每個任務,不是都在同一時刻,可以更好的使用有限資源,
符號H可用于范圍,例如,H H(0-7) * * *代表凌晨0:00到 上午7:59一段時間,
符號H在一定范圍內可被認為是一個隨機值,但實際上它是任務名稱的一個散列而不是隨機函式,
案例:
每30分鐘構建一次
H/30 * * * *
每2小時構建一次
H H/2 * * *
每天早上8點構建一次
0 8 * * *
每天的8點,12點,22點,一天構建3次
0 8,12,22 * * *
每前半小時中每隔10分鐘構建一次
H(0-29)/10 * * * *
每個作業日從早上9點45分開始到下午4點45分結束這段時間內每間隔2小時的45分鐘那一刻構建一次
45 9-16/2 * * 1-5
每月(除了12月)從1號到15號這段時間內某刻構建一次
H H 1,15 1-11 *
好了,案例就列舉這么多了,
現在,為了演示,我設定為每隔1分鐘執行一次,

命令如下,

可以看到它每分鐘就觸發執行一次任務,


五、實戰:Unity + Jenkins
下面我演示一下通過Jenkins來呼叫Unity打包Android的APK,
我先畫個流程圖,方便大家理解:

現在,我們開始吧,
1、Unity Demo工程
1.1、創建Demo工程
創建一個Unity工程,

簡單弄點東西,

1.2、切換Android平臺
點擊 File / Build Settings選單,切換成Android平臺,

1.3、設定JDK、Android SDK、Gradle
點擊Edit / Preferences,在External Tools中設定好JDK、Android SDK、Gradle,

1.4、設定包名
在Player Settings中設定一下包名,比如com.linxinfa.test,

1.5、測驗打包
添加要打包的場景,手動點擊Build,測驗一下是否能正常打出APK,

可以正常打出APK,說明打包環境設定都正確,

2、撰寫Editor打包工具
2.1、Editor打包工具代碼
新建一個Editor檔案夾,

在Editor檔案夾中新建一個BuildTools腳本,

BuildTools.cs腳本代碼如下:
using UnityEngine;
using UnityEditor;
public class BuildTools
{
[MenuItem("Build/Build APK")]
public static void BuildApk()
{
BuildPlayerOptions opt = new BuildPlayerOptions();
opt.scenes = new string[] { "Assets/Scenes/SampleScene.unity" };
opt.locationPathName = Application.dataPath + "/../Bin/test.apk";
opt.target = BuildTarget.Android;
opt.options = BuildOptions.None;
BuildPipeline.BuildPlayer(opt);
Debug.Log("Build App Done!");
}
}
2.2、執行Editor打包工具選單
點擊選單Build / Build Apk,

可以正常打出APK,

3、命令列呼叫Unity靜態函式:打包函式
3.1、Unity命令列模式
Unity提供了命令列模式給開發者,我們可以寫bat腳本來呼叫Unity中的靜態函式,比如我們的打包函式,
格式:
Unity程式 -引數 -projectPath 工程地址 -executeMethod 靜態函式
例:
"D:\software\Unity\2021.1.7f1c1\Editor\Unity.exe" ^
-quit ^
-batchmode ^
-projectPath "E:\UnityProject\UnityDemo" ^
-executeMethod BuildTools.BuildApk ^
-logFile "E:\UnityProject\UnityDemo\output.log"
注:為了閱讀方便,命令我寫成多行,在
bat中連接多行的符號是^
我們可以在Unity官方手冊看到具體的命令引數說明:https://docs.unity3d.com/Manual/CommandLineArguments.html

3.2、命令引數解釋
-batchmode
在 批處理模式下運行Unity,它不會彈出視窗,當腳本代碼在執行程序中發生例外或其他操作失敗時Unity將立即退出,并回傳代碼為1,
-quit
命令執行完畢后將退出Unity編輯器,請注意,這可能會導致錯誤訊息被隱藏(但他們將顯示在Editor.log檔案)
-buildWindowsPlayer <pathname>
構建一個32位的Windows平臺的exe(例如:-buildWindowsPlayer path/to/your/build.exe)
-buildWindows64Player <pathname>
構建一個64位的Windows平臺的exe(例如:-buildWindows64Player path/to/your/build.exe)
-importPackage <pathname>
匯入一個的package,不會顯示匯入對話框
-createProject <pathname>
根據提供的路徑建立一個空專案
-projectPath <pathname>
打開指定路徑的專案
-logFile <pathname>
指定輸出的日志檔案
-nographics
當運行在批處理模式,不會初始化顯卡設備,不需要GPU參與;但如果你需要執行光照烘焙等操作,則不能使用這個引數,因為它需要GPU運算,
-executeMethod <ClassName.MethodName>
在Unity啟動的同時會執行靜態方法,也就是說,使用executeMethod我們需要在編輯檔案夾有一個腳本并且類里有一個靜態函式,
-single-instance
在同一時間只允許一個游戲實體運行,如果另一個實體已在運行,然后再次通過-single-instance啟動它的話會調節到現有的這個實體,
-nolog
不產生輸出日志, 通常output_log.txt被寫在游戲輸出目錄下的*_Data檔案夾中,
3.3、批處理腳本
我們知道,一個Unity工程只能打開一個實體,所以如果我們已經手動用Unity打開了工程,此時執行下面這個命令是會報錯的,
"D:\software\Unity\2021.1.7f1c1\Editor\Unity.exe" ^
-quit ^
-batchmode ^
-projectPath "E:\UnityProject\UnityDemo" ^
-executeMethod BuildTools.BuildApk ^
報錯如下:
Aborting batchmode due to fatal error:
It looks like another Unity instance is running with this project open.
Multiple Unity instances cannot open the same project.
我們需要先判斷Unity是否在運行中,如果是,則先將舊的Unity實體行程殺掉,對應的bat代碼如下:
::判斷Unity是否運行中
TASKLIST /V /S localhost /U %username%>tmp_process_list.txt
TYPE tmp_process_list.txt |FIND "Unity.exe"
IF ERRORLEVEL 0 (GOTO UNITY_IS_RUNNING)
ELSE (GOTO START_UNITY)
:UNITY_IS_RUNNING
::殺掉Unity
TASKKILL /F /IM Unity.exe
::停1秒
PING 127.0.0.1 -n 1 >NUL
GOTO START_UNITY
:START_UNITY
:: 此處執行Unity打包
另外,我們想要在執行打包時傳入一些引數,比如APP名字、版本號等,可以在命令中加上,格式可以自定義,我們只需在后面的C#代碼中進行相應的決議即可,例:
--productName:%1 --version:%2
其中%1表示引數1,%2表示引數2,
完整命令如下:
"D:\software\Unity\2021.1.7f1c1\Editor\Unity.exe" ^
-quit ^
-batchmode ^
-projectPath "E:\UnityProject\UnityDemo" ^
-executeMethod BuildTools.BuildApk ^
--productName:%1 ^
--version:%2
整合上面的Unity行程判斷,最終完整的bat代碼如下:
::判斷Unity是否運行中
TASKLIST /V /S localhost /U %username%>tmp_process_list.txt
TYPE tmp_process_list.txt |FIND "Unity.exe"
IF ERRORLEVEL 0 (GOTO UNITY_IS_RUNNING)
ELSE (GOTO START_UNITY)
:UNITY_IS_RUNNING
::殺掉Unity
TASKKILL /F /IM Unity.exe
::停1秒
PING 127.0.0.1 -n 1 >NUL
GOTO START_UNITY
:START_UNITY
:: 此處執行Unity打包
"D:\software\Unity\2021.1.7f1c1\Editor\Unity.exe" ^
-quit ^
-batchmode ^
-projectPath "E:\UnityProject\UnityDemo" ^
-executeMethod BuildTools.BuildApk ^
-logFile "E:\UnityProject\UnityDemo\output.log" ^
--productName:%1 ^
--version:%2
將上面的bat代碼保存為build_app.bat,我們通過命令列去執行這個build_app.bat,如下:

可以看到此時能打出APK,

在輸出的日志檔案中我們也可以看到我們Debug.Log輸出的日志,

3.4、Unity打包工具接收命令列引數
雖然我們上面的bat腳本傳遞了包名和版本號兩個引數,但是我們在Unity的打包工具中并沒有對這兩個引數進行決議,現在,我們補上決議引數的邏輯吧,
// 決議命令列引數
string[] args = System.Environment.GetCommandLineArgs();
foreach (var s in args)
{
if (s.Contains("--productName:"))
{
string productName= s.Split(':')[1];
// 設定app名字
PlayerSettings.productName = productName;
}
if (s.Contains("--version:"))
{
string version = s.Split(':')[1];
// 設定版本號
PlayerSettings.bundleVersion = version;
}
}
打包工具完整代碼如下:
// BuildTools.cs
using UnityEngine;
using UnityEditor;
public class BuildTools
{
[MenuItem("Build/Build APK")]
public static void BuildApk()
{
// 決議命令列引數
string[] args = System.Environment.GetCommandLineArgs();
foreach (var s in args)
{
if (s.Contains("--productName:"))
{
string productName= s.Split(':')[1];
// 設定app名字
PlayerSettings.productName = productName;
}
if (s.Contains("--version:"))
{
string version = s.Split(':')[1];
// 設定版本號
PlayerSettings.bundleVersion = version;
}
}
// 執行打包
BuildPlayerOptions opt = new BuildPlayerOptions();
opt.scenes = new string[] { "Assets/Scenes/SampleScene.unity" };
opt.locationPathName = Application.dataPath + "/../Bin/test.apk";
opt.target = BuildTarget.Android;
opt.options = BuildOptions.None;
BuildPipeline.BuildPlayer(opt);
Debug.Log("Build App Done!");
}
}
重新執行命令:

然后我們安裝一下APK,看看APP名字是不是哈哈哈,

在應用資訊里可以看到版本號也是我們命令列中設定的1.2.0.0,

4、Jenkins呼叫bat腳本
我們回到Jenkins頁面中,創建一個帶引數的任務,
appName引數:

version引數:

命令列:
E:\UnityProject\UnityDemo\bat\build_app.bat %appName% %version%,如下:

執行Jenkins任務,如下:

等等運行結果:

執行完畢,我們看下輸出的日志,

可以看到我們的bat腳本被正確執行了,引數也傳遞正確,

APK也可以正常生成,

安裝到模擬器上,可以看到名字正確,

版本號也正確,

流程走通了,剩下的就是根據自己的需求進行擴展啦,比如打包前先執行一下svn更新之類的,需要額外引數,就在Jenkins中添加,傳遞到bat腳本中,再傳遞到Unity中,最后根據引數進行打包,
5、拓展:python加強版腳本
我個人其實不是特別喜歡寫bat腳本,我更喜歡寫pytho,于是,我就寫了個python版的腳本,腳本中我加了監控Unity日志輸出的邏輯,方便進行一些判斷,畫個圖:

python完整代碼如下:
import os
import sys
import time
# 設定你本地的Unity安裝目錄
unity_exe = 'D:/software/Unity/2021.1.7f1c1/Editor/Unity.exe'
# unity工程目錄,當前腳本放在unity工程根目錄中
project_path = 'E:/UnityProject/UnityDemo'
# 日志
log_file = os.getcwd() + '/unity_log.log'
static_func = 'BuildTools.BuildApk'
# 殺掉unity行程
def kill_unity():
os.system('taskkill /IM Unity.exe /F')
def clear_log():
if os.path.exists(log_file):
os.remove(log_file)
# 呼叫unity中我們封裝的靜態函式
def call_unity_static_func(func):
kill_unity()
time.sleep(1)
clear_log()
time.sleep(1)
cmd = 'start %s -quit -batchmode -projectPath %s -logFile %s -executeMethod %s --productName:%s --version:%s'%(unity_exe,project_path,log_file,func, sys.argv[1], sys.argv[2])
print('run cmd: ' + cmd)
os.system(cmd)
# 實時監測unity的log, 引數target_log是我們要監測的目標log, 如果檢測到了, 則跳出while回圈
def monitor_unity_log(target_log):
pos = 0
while True:
if os.path.exists(log_file):
break
else:
time.sleep(0.1)
while True:
fd = open(log_file, 'r', encoding='utf-8')
if 0 != pos:
fd.seek(pos, 0)
while True:
line = fd.readline()
pos = pos + len(line)
if target_log in line:
print(u'監測到unity輸出了目標log: ' + target_log)
fd.close()
return
if line.strip():
print(line)
else:
break
fd.close()
if __name__ == '__main__':
call_unity_static_func(static_func)
monitor_unity_log('Build App Done!')
print('done')
我們把腳本保存為build_app.py,

把Jenkins中的命令改為執行python腳本:
call python E:\UnityProject\UnityDemo\bat\build_app.py %appName% %version%
如下:

執行一下任務,

耐心等待執行結果,

執行完畢可以看到監控到的日志,

我們在python中輸出的日志都可以在Jenkins的Console Output中看到,

APK順利生成,Very Good,完美~

六、完畢
好了,就寫這么多吧,我是新發,喜歡我的可以點贊、關注,有任何技術上的疑問歡迎評論或留言~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289405.html
標籤:其他
上一篇:猜數字小游戲(C語言版)




