Unity Jenkins打包 部署
Jenkins 打包Unity APK
新建一個Unity 工程,新增編輯器打包指令碼
編輯器指令碼 APKBuild.cs
編輯狀態下呼叫 APKBuild中 Build 方法,執行打包,
測試成功開始編寫 批處理指令碼 Unity.bat 通過批處理指令碼呼叫 APKBuild中 Build 方法 執行打包
執行批處理打包成功開始在Jenkins新建專案
APKBuild.cs 程式碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class APKBuild : Editor
{
[MenuItem("Tool/APKBuild")]
public static void Build()
{
BuildTarget buildTarget = BuildTarget.Android;
// 切換到 Android 平臺
EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);
// keystore 路徑, G:\keystore\one.keystore
PlayerSettings.Android.keystoreName = "G:\\keystore\\one.keystore" ;
// one.keystore 密碼
PlayerSettings.Android.keystorePass = "123456";
// one.keystore 別名
PlayerSettings.Android.keyaliasName = "bieming1";
// 別名密碼
PlayerSettings.Android.keyaliasPass = "123456";
List<string> levels = new List<string>();
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
if (!scene.enabled) continue;
// 獲取有效的 Scene
levels.Add(scene.path);
}
// 打包出 APK 名
string apkName = string.Format("./{0}.apk", "Test");
// 執行打包
string res = BuildPipeline.BuildPlayer(levels.ToArray(), apkName, buildTarget, BuildOptions.None);
AssetDatabase.Refresh();
}
}
- 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
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
在編輯器下可以呼叫 Build() 方法執行打包 APK
新建批處理指令碼 Unity.bat
H:\Unity\Unity\Editor\Unity.exe -projectPath G:\MyProject\AndroidSDKUnityDemo\AndroidSDKDemo -quit -batchmode -executeMethod APKBuild.Build -logFile build.log
- 1
引數介紹
H:\Unity\Unity\Editor\Unity.exe 為Unity 安裝執行檔案
-projectPath 執行Unity遊戲工程
G:\MyProject\AndroidSDKUnityDemo\AndroidSDKDemo 為Unity 工程目錄 Assets 上一層目錄
-quit 表示執行結束自動退出
-executeMethod 表示執行 編輯器方法
APKBuild.Build APKBuild 為編輯器指令碼 APKBuild.cs , 中APKBuild.cs Build 函式名
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
最終 Unity.bat 指令碼
@echo off
echo 正在生成APK檔案...
REM H:\Unity\Unity\Editor\Unity.exe -projectPath G:\MyProject\AndroidSDKUnityDemo\AndroidSDKDemo -quit -batchmode -executeMethod APKBuild.Build -logFile build.log
%1 -projectPath %2 -quit -batchmode -executeMethod APKBuild.Build -logFile build.log
echo APK檔案生成完畢!
pause
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
上面 %1 %2 我通過在執行批處理指令碼的時候將引數傳遞進來
將 Unity.bat 放在 Unity 專案根目錄(和 Assets 同級)
將Unity 工程上傳到 SVN伺服器
開始Jenkins
新建一個新工程
下一步彈出配置介面
原始碼管理
中選擇 SubVersion 配置SVN 路徑和使用者名稱密碼
點選 Add 新增一個使用者名稱和密碼
Check -out Strategy 中配置每次構建時執行的 SVN update命令(每次構建時會將SVN 中最新的專案更新到 Jenkins 的工作空間WORKSPACE)
如我本地的Jenkins 工作空間位置,Jenkins新建的專案都會放在 workspace 下
C:\Users\Dev\.jenkins\workspace\
- 1
構建中選擇 Windows 批處理,
第一行列印一個 HelloWorld
第二行執行 Unity.bat 後邊兩個引數 分別傳遞給批處理中 %1,%2
%WORKSPACE% 是Jenkins 中可用的環境變數,表示該專案在Jnekins 中的目錄位置
本專案在Jenkins 為 TestDemo則 %WORKSPACE% 在我本地為 C:\Users\Dev\.jenkins\workspace\TestDemo
- 1
- 2
配置完成儲存,執行構建(構建時要將 Unity 關掉)
可以檢視日誌
等待構建
構建完成後開啟工作空間,發現目錄下生成一個 Test.apk 表示 APK 生成成功
下面來看下我的 Unity 工程和 Jenkins 工程的關係
Unity Demo工程目錄如下
Unity Demo工程上傳到 SVN 伺服器
在 Jenkins 中新建TestDemo專案,在 TestDemo配置中 新增 Demo工程上傳的 SVN 伺服器路徑
Jenkins 在構建構建時會從 SVN 伺服器將 Demo 工程 CheckOut 到 Jenkins 的工作空間中 TestDemo 專案下
開啟 TestDmeo 資料夾,我已經執行過構建了, Jenkins 已經從 SVN 上更新了最新的專案到 工作空間中
然後我在執行 Unity.bat 時,將 %WORKSPACE%
在我本地為(C:\Users\Dev.jenkins\workspace\TestDemo)傳遞了進去,即執行的 打包工程是Jenkins 工作空間的這個工程
每次修改Unity Demo 工程,將修改提交到 SVN,然後再執行 Jenkins 構建
mac部署
下載Jenkins war安裝包
mac jenkins war安裝包.png
Jenkins下載地址,下載war安裝包安裝Tomcat
要注意的是jdk版本,選擇jdk8,不然執行jenkins會報錯:jdk下載地址
jdk9報錯截圖.png報錯日誌:Stack trace
java.lang.AssertionError: InstanceIdentity is missing its singleton
org.jenkinsci.main.modules.instance_identity.InstanceIdentity.get(InstanceIdentity.java:133)
at org.jenkinsci.main.modules.instance_identity.InstanceIdentityRSAProvider.getKeyPair(InstanceIdentityRSAProvider.java:23)
at jenkins.model.identity.InstanceIdentityProvider$KeyTypes.get(InstanceIdentityProvider.java:161)
at jenkins.model.identity.InstanceIdentityProvider$KeyTypes.getKeyPair(InstanceIdentityProvider.java:210)
at jenkins.model.identity.IdentityRootAction.getUrlName(IdentityRootAction.java:42)
at jenkins.model.Jenkins.getDynamic(Jenkins.java:3635)
...
Caused: javax.servlet.ServletException
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:765)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
如果mac下已經安裝多版本JDK,可以按照Mac下多版本JDK安裝來設定/切換使用版本
Tomcat安裝包選擇tar.gz版: Tomcat下載地址
安裝Tomcat完成後:
將下載的Jenkins war包,放入之前Tomcat資料夾下/webapps資料夾中。
載入成功會讓輸入密碼,密碼在圖中紅色的路徑檔案裡面
密碼路徑,copy.png建議點選推薦安裝
Install suggests plugins
目錄:
- credentials使用kind: Username and password
- credentials使用kind: SSH Username private key
2.1 SSH基礎;什麼是ssh?什麼是公鑰?什麼是私鑰?什麼是數字簽名、數字證書?
2.2 配置SSH Username private key credentials的5個步驟
2.3 git ssh正確情況截圖
2.4 報錯情況處理:code 128:Permission denied (publickey)
git配置(GitHub)
git配置主要是設定credentials,常用的有2種方式:
1. kind: Username and password
kind-userName with password.png如何驗證這種方式是否有效呢?
新建 自由風格的軟體專案
構建自由風格的軟體專案.png只需配置原始碼管理這一項,注意URL要HTTPS(在github上建立一個repositories 或者使用 測試使用:github UnityJenkins工程地址),credentials選擇剛剛建立的Username and password,儲存。
git credentials-userName and password.png立即構建,若成功,在~/.jenkins/workspace中可以看到clone到的工程;若失敗,檢查賬號密碼。
Jenkins git clone成功到workspace.png
2. kind: SSH Username private key
2.1 SSH基礎
使用SSH這種方式,需要明白什麼是ssh?什麼是公鑰?什麼是私鑰?什麼是數字簽名、數字證書?
如果都明白,可以跳過下面3個連結:
2.2 配置SSH Username private key credentials的5個步驟
接下來生成一個SSH Username private key credentials
這個GitHub官方ssh連結 說明的非常詳細,能看懂就參照這個連結一步步做
大概分為以下幾步:
- Checking for existing SSH keys,檢查SSH keys是否已存在,如果id_dsa(私鑰)、id_dsa.pub(公鑰)已存在,跳過2、3步驟,若不存在則生成
- Generating a new SSH key and adding it to the ssh-agent,生成新的SSH key,並新增到ssh-agent。這時候按第一步檢查,id_dsa(私鑰)、id_dsa.pub(公鑰)已存在則成功。
- Jenkins配置credentials,將id_dsa(私鑰)的內容copy到SSH Username private key credentials中(private key選擇enter directly),Username、ID隨意。
2.3 git ssh正確情況截圖
git ssh正確情況截圖.png2.4 報錯情況處理:code 128:Permission denied (publickey)
若出現code 128:Permission denied (publickey)
的報錯,說明ssh key credentials沒有配置對。
按照上面5個步驟檢查一遍。用第四步檢查GitHub上是否配置成功,若成功,檢查id_dsa(私鑰)的內容copy過程有沒有遺漏,private key是否正確。
構建失敗日誌: ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Command returned status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: Could not read from remote repository.
git ssh key設定有誤報錯.png解決完code 128:Permission denied (publickey)
報錯,按1.1的方式驗證是否能成功clone工程。
區別是URL要SSH,例如[email protected]:GeWenL/UnityJenkins.git
,如“git ssh正確情況截圖.png”所示。
相關推薦
Unity Jenkins打包 部署
Jenkins 打包Unity APK新建一個Unity 工程,新增編輯器打包指令碼編輯器指令碼 APKBuild.cs 編輯狀態下呼叫 APKBuild中 Build 方法,執行打包, 測試成功開始編寫 批處理指令碼 Unity.bat 通過批處理指令碼呼叫 APKBuil
Ubantu Jenkins打包部署二:專案配置
打包過程發生錯誤。不能建立資料夾。 錯誤資訊如下。 14:40:18.864 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project :app - Registering mo
jenkins 自動打包部署爬蟲專案
最近因工作需要,負責看護公司的生產環境,有16臺生產服務節點,所以必須得引入自動化管理工具,不然我可不得累死啊。本文記錄一下在使用Jenkins釋出過程的整個過程。 1.啟動Jenkins服務 2.登陸網頁 3.配置
docke+jenkins+git自動打包部署(2)--jenkins網頁配置
上篇將jenkins在伺服器上跑起來了,這篇主要是將jenkins的外掛安裝和系統配置設定一下 瀏覽器輸入10.17.191.211:8080(上篇中跑jenkins的伺服器) 一、這裡的pas
docker+jenkins+git自動打包部署(1)
經過幾天的摸索還有大神的指導,終於把jenkins的自動部署搞定了,但是大神的操作還是不太懂,先記錄著,邊摸索邊記錄,省得忘掉了。 在網上查的jenkins的部署都是裝tomcat然後再tomcat下部署神馬的,可是我要的是docker下載jenkin
Jenkins實現前端專案自動化整合打包部署
前言: 為了前端專案的工程化,減少專案釋出環境的部署,實現自動化整合打包部署。 本文是針對前端專案和gitlab倉庫程式碼,簡述jenkins實現自動化部署的配置流程。 jen
Jenkins配置-打包部署maven專案
環境:windows10 64位 1.下載jenkins安裝包 2.部署jenkins.war 準備tomcat,我的版本為apache-tomcat-7.0.56;將jenkins.war放在tomcat的webapps下,然後啟動tomcat,啟動完成後在位址列
Jenkins自動打包部署專案
個人下載是長期穩定的那個版本,下載後,得到一個.msi的安裝包: 點選進行安裝,然後一直點選下一步。 jenkins會自動佔用8080埠,如果這個埠不希望被jenkins佔用,可以去資料夾裡的這個檔案進行修改: 修改後,需要去服務裡面進行jenkin
Jenkins中的專案打包部署到遠端Tomcat
Jenkins構建成功之後,可以在/usr/local/JenkinsHome/workspace中看到 在系統管理-外掛管理-已安裝外掛中,檢視publish over ssh是否安裝 hostname設定 192.168.0.239 為SVN、Nexus
DevOps系列——Jenkins/Gitlab自動打包部署
前面只說了DevOps的兩個基礎元件Jenkins和GitLab,客官也不要著急,我們玩就玩的深入一點,Gitlab和Jenkins的各種配置和 外掛很多,也夠啃一陣子的,不要照著操作一通就感覺萬事大吉了,多做些邊緣測試,多玩點不一樣的操作,那今天我們來點 實戰整合加強訓練。 作者原創文章,謝絕一切轉載,違者
Jenkins打包安卓時提示沒同意constraintLayout的license的解決方法
失敗 studio 使用 you 安裝目錄 目錄 nbsp cnblogs bin文件 使用Jenkins打包安卓項目時,報錯並失敗,錯誤信息: You have not accepted the license agreements of the following
jenkins自動部署
jenkins自動部署 ansible 準備的東西ip.txt192.168.1.10192.168.1.10192.168.1.10auto_deploy_war.sh#!/bin/bash#Auto deploy Tomcat for jenkins perf#by author wugk 201
打包部署到tomcat
服務器 nbsp 啟動tomcat 瀏覽器緩存 eclips idea group -i 修改 部署到tomcat的方法 註意:在eclipse 或 idea 上需要引入外部tomcat 1.將程序打成war包啟動tomcat 2.將target 文件下內容壓縮城zi
Unity資源打包之Assetbundle
nas rar 啟用 大致 ebp 掛載 href 交叉 bundle 本文原創版權歸 csdn janeky 全部。轉載請具體註明原創作者及出處,以示尊重。 作者:janeky 原文:http://blog.csdn.net/janeky/article/detail
Maven打包部署
9.png org app clip run png maven打jar pri jar包 Maven打Jar包 問題一 Eclipse突然SB告訴我類不存在還讓我導包進來O__O "…,但是我明明有這個類。這是不要慌,通過在網上搜索得知:由於eclipse的編譯是基於時間
jenkins實戰之jenkins安裝部署(二)
自動化運維 上一小節介紹了Jenkins安裝(Linux/uninx平臺),這節我們講講Jenkins界面操作(包括系統設置,工具安裝,插件管理,系統升級,安全設置等等操作); 登錄jenkins首頁,分別有以下選項欄,從左側看起,點擊Jenkins系統管理我們會看到右側list欄,內
jenkins介紹部署及三種構建方式配置
構建 簡單 nbsp adding linu tle ref pass 默認 [隱藏] 1前言 1.1jenkins介紹 1.2jenkins好處 1.3我的jenkins實踐 1.4jenkins使用前提 2jenkins部署 2.1下面內容介紹 2.2環境介紹
打包部署常用命令
測試環境對應Jenkins項目:/data/jenkins/workspace查看端口狀態:netstat -adp | grep 8092 查看 進程id:ps -ef | grep 3532開發提供:applications.properties配置文件:server.xml/conf/web.xmlco
Jenkins 自動化部署-安裝篇(一)
public 參考 ane cnblogs 用戶 repo candidate -s 配置 Centos7上安裝Jenkins 安裝 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redh
Jenkins~簡單部署及使用
oracl www pan host bre 第三方 inux nvi local 在此註意:新版的jenkins.war包需要JDK1.8版本的支持,否則安裝失敗! 源碼包下載地址 JAVA:http://www.oracle.com/technetwork/java