国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

通過(guò)Jenkins實(shí)現(xiàn)Unity多平臺(tái)自動(dòng)打包以及相關(guān)問(wèn)題解決

這篇具有很好參考價(jià)值的文章主要介紹了通過(guò)Jenkins實(shí)現(xiàn)Unity多平臺(tái)自動(dòng)打包以及相關(guān)問(wèn)題解決。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

簡(jiǎn)介

????????通過(guò)本文可以了解到如何在windows和mac上部署Jenkins。并且通過(guò)Jenkins實(shí)現(xiàn)Unity在IOS,安卓和PC等多平臺(tái)自動(dòng)打包的功能,并且可以將打包結(jié)果通過(guò)飛書機(jī)器人同步到飛書群內(nèi)。優(yōu)化工作流,提高團(tuán)隊(duì)的開(kāi)發(fā)效率。文末記錄了實(shí)際使用Jenkins時(shí)遇到的各種問(wèn)題,以及對(duì)應(yīng)的解決方法。

????????我們團(tuán)隊(duì)工作中配置了專門的mac設(shè)備,用于處理打包任務(wù),各個(gè)職能的人可以根據(jù)自己的需要登錄到Jenkins后臺(tái)執(zhí)行對(duì)應(yīng)的打包指令。并且工作日會(huì)根據(jù)git提交情況定時(shí)自動(dòng)構(gòu)建,每天將各個(gè)平臺(tái)的構(gòu)建包,通過(guò)Testflight等方式同步給組內(nèi)的成員。

Windows平臺(tái)Jenkins安裝

Jenkins下載地址和官網(wǎng)

官網(wǎng):Jenkins

官方文檔說(shuō)明:Jenkins User Documentation

安裝步驟

選擇指定目錄

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

選擇域訪問(wèn)

填寫賬號(hào)和開(kāi)機(jī)密碼(如果不知道自己的賬號(hào),可以查看下方win10無(wú)法安裝的問(wèn)題處理,查看自己的賬號(hào)),點(diǎn)擊Test credentials確保賬號(hào)正確

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

選擇端口號(hào)

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

選擇jdk目錄

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

安裝相關(guān)問(wèn)題

報(bào)錯(cuò) service jenkins failed to start

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

進(jìn)入服務(wù)選擇jenkins

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

雙擊Jenkins,啟動(dòng)類型設(shè)置為自動(dòng)。

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

登錄頁(yè)簽,輸入當(dāng)前的開(kāi)機(jī)密碼。回到上個(gè)頁(yè)面點(diǎn)擊啟動(dòng)

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

啟動(dòng)成功后,點(diǎn)擊之前報(bào)錯(cuò)界面的retry

Windows10無(wú)法安裝問(wèn)題處理

1.搜索欄搜索管理工具

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

2.本地安全策略

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

3本地策略->用戶權(quán)限分配->右鍵作為服務(wù)登錄->屬性

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

添加用戶組->高級(jí)->輸入名字->立即查找->選中賬戶點(diǎn)確定

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

安裝界面account為下圖的用戶名,必須包含域。密碼為開(kāi)機(jī)密碼

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

Mac安裝Jenkins

命令行執(zhí)行 brew install jenkins

修改Jenkins工作目錄

啟動(dòng)Jenkins

輸入一開(kāi)始設(shè)置的端口號(hào)

http://127.0.0.1:8080/

初次需要輸入密碼

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

創(chuàng)建Unity工程

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

Git配置

選擇源碼管理

填入對(duì)應(yīng)git地址,選擇配置好的ssh key

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

如果未創(chuàng)建ssh key,按照下面的步驟創(chuàng)建ssh key

添加SSH key

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

選擇Ssh username with private key,

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

把private key 填入就可以了 (注意這里填的是私鑰-----BEGIN RSA PRIVATE KEY-----? xxx -----END RSA PRIVATE KEY----- )

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

構(gòu)建工程

嘗試build,成功說(shuō)明git配置正確

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

Windows Jenkins常用命令

啟動(dòng)

net start jenkins

關(guān)閉?

net stop jenkins

Mac Jenkins常用命令

啟動(dòng)

brew services start jenkins

停止

brew services stop jenkins

重啟

brew services restart jenkins

Jenkins配置

設(shè)置默認(rèn)工作目錄

Windows

1.修改環(huán)境變量JENKINS_HOME E:\JenkinsHome

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

2.修改jenkins.xml

在jenkins的安裝目錄下修改JENKINS_HOME

? <env name="JENKINS_HOME" value="%JENKINS_HOME%"/>

之后重啟jenkins

Mac

Mac下Jenkins的默認(rèn)安裝路徑為

/Users/xxx/.jenkins

對(duì)應(yīng)的配置文件config.xml也放置在該目錄下

默認(rèn)的workspace

? <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>

Unity插件安裝

ManageJenkins->Manage plugins->可選插件->搜索unity 安裝對(duì)應(yīng)插件

配置Unity安裝地址

Manage Jenkins->Global ToolConfiguration

添加對(duì)應(yīng)的引擎地址

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

設(shè)置unity 地址C:\Program Files\Unity\Hub\Editor\2020.1.0f1c1

這里特別注意mac配置unity的話,路徑最后要以Unity.app為結(jié)尾。

在項(xiàng)目配置里構(gòu)建,添加unity命令

1.先創(chuàng)建editor腳本

先在unity的editor文件夾創(chuàng)建BuildTools

TypeScript

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!");
??? }
}

確保可以正常運(yùn)行

Unity相關(guān)命令行

https://docs.unity3d.com/Manual/CommandLineArguments.html

2.jenkins工程添加editor配置

添加Invoke Unity3D Editor

選擇對(duì)應(yīng)版本

添加命令

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

C++
-projectPath autobuild/? -quit -batchmode -executeMethod BuildTools.BuildApk
//BuildTools 是editor腳本類名 BuildApk是對(duì)應(yīng)的函數(shù)

設(shè)置構(gòu)建文件刪除規(guī)則

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

參數(shù)化構(gòu)建

安裝插件 Extended Choice Parameter

添加參數(shù)

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

注意設(shè)置名稱,之后會(huì)作為參數(shù)。這里選的是選項(xiàng)型參數(shù),一行代表一個(gè)選項(xiàng),第一個(gè)代表默認(rèn)選項(xiàng)

選擇Build with parameters

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

在之后的腳本里可以通過(guò)${platform}? 獲取參數(shù)(這里的platform就是上面的參數(shù)名稱)

例子一,shell腳本直接

Bash
echo ${platform}

例子二,unity3Deditor命令調(diào)用。這里--platform是自定義的參數(shù)可以自定義其他任意參數(shù)

Bash
-projectPath autobuild/? -quit -batchmode -executeMethod BuildTools.AutoBuild --platform:${platform}

之后在unity內(nèi)的editor可以通過(guò)System.Environment.GetCommandLineArgs()獲取該參數(shù)

C#
?? public static void AutoBuild()
??? {
??????? string[] args = System.Environment.GetCommandLineArgs();


??????? foreach (var s in args)
??????? {
??????????? Debug.Log("AutoBuild params:" + s);
??????????? if (s.Contains("--platform:"))
??????????? {
??????????????? string platform = s.Split(':')[1];
??????????????? if (platform == "apk")
??????????????? {
??????????????????? BuildApk();
??????????????? }
??????????????? else if (platform == "pc")
??????????????? {
??????????????????? BuildPc();
??????????????? }
??????????? }

??????? }

??? }

根據(jù)條件構(gòu)建

安裝Conditional BuildStep

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

在構(gòu)建步驟的時(shí)候,可以添加Conditional Step

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

這里添加了一個(gè)String match的條件,滿足條件(platform字段為pc時(shí))才會(huì)執(zhí)行對(duì)應(yīng)的構(gòu)建步驟.

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

后續(xù)的構(gòu)建步驟可以像之前的普通步驟一樣添加

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

Xcode構(gòu)建步驟

安裝Xcode integration 插件

在插件界面安裝Xcode integration 插件

配置登錄憑證

Manage Credentials界面,配置全局憑證

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

  • 選擇MacOs Keychain password and path
  • 描述名為login.keychain
  • 路徑為/Users/{username}/Library/Keychains/login.keychain-db
  • (打包機(jī)地址為/Users/xxx/Library/Keychains/login.keychain-db)
  • 密碼為開(kāi)機(jī)密碼

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

添加X(jué)code編譯步驟

這里先按照前面的根據(jù)條件構(gòu)建,當(dāng)平臺(tái)名為ios時(shí)再進(jìn)行此操作

  • 填寫Development Team ID(TeamID需要到后臺(tái)填寫)

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

  • 勾選Use Legacy Build System

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

  • Configuration填Release
  • Xcode Schema File 填 Unity-iPhone
  • 勾選Generate Archive
  • Export method填ad-hoc

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

  • 點(diǎn)開(kāi)CodeSigning
  • 選擇Automatic Signing

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

Automatic Signing如果失敗的話,可以使用ManualSigning

需要先去develop后臺(tái)生成一個(gè)新的profile,下載之后雙擊啟用。

然后在manualSigning的uuid填入新的profile證書的uuid

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

uuid的查看方式是在安裝完profile之后 ,在 資源庫(kù)/MobileDevice/Provisioning Profiles/xxx.mobileprovision

這里mobileprovision文件名就是對(duì)應(yīng)的uuid可以根據(jù)安裝時(shí)間進(jìn)行查看。

  • 勾選Unlock Keychain
  • keyChain選擇之前設(shè)置的login.keyChain
  • path填/Users/xingye/Library/Keychains/login.keychain-db
  • 密碼填開(kāi)機(jī)密碼

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

  • 點(diǎn)開(kāi)Advanced XcodeBuild options
  • Xcode Project Directory填Build/XcodeProj
  • Build output directory填${WORKSPACE}/Build/Ipa/

TestFlight配置

TestFlight上傳需要用到altool

Bash
/Applications/Xcode.app/Contents/Developer/usr/bin/altool --upload-app -f ${WORKSPACE}/outputs/xx.ipa --type ios --apiKey xxx --apiIssuer "xxx"

注意這里的Apikey是在appstore connect的用戶和訪問(wèn)界面的秘鑰界面生成的。生成秘鑰后可以下載對(duì)應(yīng)的p8秘鑰文件,需要將該文件放置在 users/xxx/private_keys 目錄下

apiIssuer 的id就是在用戶和訪問(wèn)界面issuer id

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

組內(nèi)人員需要進(jìn)行測(cè)試時(shí)請(qǐng)按照下方指南進(jìn)行操作

TestFlight使用指南

另外補(bǔ)充一些后臺(tái)需要進(jìn)行的操作

一個(gè)是需要在用戶和訪問(wèn)界面,添加需要使用testflight的測(cè)試人員的apple id

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

添加后會(huì)向該測(cè)試人員發(fā)送一個(gè)郵件邀請(qǐng),對(duì)方同意之后需要到應(yīng)用的TestFlight界面。

如果還沒(méi)有內(nèi)部測(cè)試組,可以先添加測(cè)試組。如果已經(jīng)存在測(cè)試組,就點(diǎn)擊已有的測(cè)試組,將新加入的開(kāi)發(fā)人員加入到測(cè)試組中

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

飛書機(jī)器人

添加飛書機(jī)器人

在群聊的設(shè)置中根據(jù)如下步驟添加機(jī)器人

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

創(chuàng)建消息發(fā)送腳本

在工程指定目錄創(chuàng)建一個(gè)python腳本feishumsg.py(這里的目錄地址為 ./toolscripts/feishumsg.py), 復(fù)制webhook地址 填到url內(nèi)

Python

#!/usr/bin/env python

#-*- encoding:utf-8 -*-

?

import sys

?

import requests

?

import time

?

JOB_URL = sys.argv[1]

JOB_NAME = sys.argv[2]

BUILD_NUMBER = sys.argv[3]

currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

url = '你的webhook地址'

method = 'post'

headers = {

??? 'Content-Type': 'application/json'

}

json = {

??? "msg_type": "interactive",

??? "card": {

??????? "config": {

??????????? "wide_screen_mode": True,

??????????? "enable_forward": True

??????? },

??????? "elements": [{

??????????? "tag": "div",

??????????? "text": {

??????????????? "content": "項(xiàng)目名稱:" + JOB_NAME + "\n構(gòu)建編號(hào):第" + BUILD_NUMBER + "次構(gòu)建\n運(yùn)行時(shí)間:" + currenttime,

??????????????? "tag": "lark_md"

??????????? }

??????? }, {

??????????? "actions": [{

??????????????? "tag": "button",

??????????????? "text": {

??????????????????? "content": "查看報(bào)告",

??????????????????? "tag": "lark_md"

??????????????? },

??????????????? "url": JOB_URL,

?? ?????????????"type": "default",

??????????????? "value": {}

??????????? }],

??????????? "tag": "action"

??????? }],

??????? "header": {

??????????? "title": {

??????????????? "content": JOB_NAME + " 構(gòu)建報(bào)告",

??????????????? "tag": "plain_text"

???? ???????}

??????? }

??? }

}

requests.request(method=method, url=url, headers=headers, json=json)

添加構(gòu)建步驟

在Jenkins后臺(tái)添加構(gòu)建步驟

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

填入如下命令

PowerShell
python toolscripts/feishumsg.py $JOB_URL $JOB_NAME $BUILD_NUMBER

運(yùn)行成功之后可以在對(duì)應(yīng)群聊收到消息

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

多用戶管理

安裝Role based Authorization Strategy插件

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

報(bào)錯(cuò)處理和問(wèn)題處理

1.Could not determine the dependencies of task ':launcher:compileReleaseJavaWithJavac'.> Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.

原因是缺少 dx.bat? 和 dx.jar ,實(shí)際上31.0.0有d8.bat和d8.jar

進(jìn)入對(duì)應(yīng)unity的sdk目錄 C:\Program Files\Unity\Hub\Editor\2020.1.0f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools\31.0.0

命令行運(yùn)行 mklink dx.bat d8.bat

C:\Program Files\Unity\Hub\Editor\2020.1.0f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools\31.0.0\lib

命令行運(yùn)行 mklink dx.jar d8.jar

或者直接復(fù)制對(duì)應(yīng)文件

相關(guān)處理鏈接

2.Filename too long

命令行運(yùn)行如下指令

C#
git config --system core.longpaths true

3. Couldn't set project path to? xxx xxx

這是jenkins的Unity3d Editor工具,在不傳-projectPath 參數(shù)的時(shí)候會(huì)把當(dāng)前的目錄作為參數(shù)傳入。如果傳入后拼接的地址,不是unity工程所在的目錄,就會(huì)報(bào)錯(cuò)。所以,需要在editor腳本上添加

-projectPath xx 參數(shù),最后拼接的地址為unity工程所在地址

4.An error occurred while resolving packages:One or more packages could not be added to the local file system:com.unity.ide.visualstudio: EBUSY: resource busy or locked, open 'E:\JenkinsHome\workspace\autobuild\autobuild\Library\PackageCache\.tmp9488BBGAK4gS5D9k\copy\Editor\COMIntegration\Release\COMIntegration.exe'

這個(gè)是由于Unity工程打開(kāi)的時(shí)候,出現(xiàn)的問(wèn)題。把Unity工程都關(guān)閉就行

5.ModuleNotFoundError: No module named 'requests'

運(yùn)行腳本時(shí)出現(xiàn)上面的報(bào)錯(cuò),原因是沒(méi)有對(duì)應(yīng)的requests模塊,在命令行輸入

?pip install requests,安裝requests模塊

mac上運(yùn)行 python3 -m pip install requests

相關(guān)處理鏈接

6.局域網(wǎng)其他設(shè)備無(wú)法連接Jenkins(jenkins安裝在mac上)

進(jìn)入/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist文件中的httpListenAddress修改為0.0.0.0 重啟,就能連接了

如果還不行查看是否存在 ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist文件,進(jìn)行同樣修改

7.Jenkins detected that you appear to be running more than one instance of Jenkins that share the same home directory '/Users/XXX/.jenkins’. This greatly confuses Jenkins and you will likely experience strange behaviors, so please correct the situation.

刪除 /Users/XXX/.jenkins 下的.owner文件

8.ERROR: Timeout after 10 minutes ERROR: Error fetching remote repo 'origin'

這是因?yàn)槟J(rèn)的git拉取超時(shí)是10分鐘,在clone大的項(xiàng)目的時(shí)候可能出現(xiàn)超時(shí)的情況。在源碼管理里面添加高級(jí)克隆行為參數(shù),設(shè)置超時(shí)時(shí)間即可

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

9.路徑問(wèn)題:在執(zhí)行bash的時(shí)候,執(zhí)行bash targetDir/xxx.sh時(shí)由于xxx.sh使用了相對(duì)路徑導(dǎo)致出錯(cuò)

通過(guò)括號(hào)+cd對(duì)應(yīng)路徑的方式可以解決該問(wèn)題 ,修改后的指令如下

Bash
(cd targetDir;bash ./xxx.sh)

10.Jenkins執(zhí)行bash時(shí)報(bào)錯(cuò),cmake: command not found

直接在bash 命令行下執(zhí)行cmake --version,沒(méi)有報(bào)錯(cuò),說(shuō)明cmake其實(shí)已經(jīng)安裝了。是環(huán)境變量的問(wèn)題。bash命令行下執(zhí)行which cmake。查看到cmake的路徑為 /opt/homebrew/bin/cmake。之后在Jenkins后臺(tái) 系統(tǒng)管理->系統(tǒng)配置->全局屬性部分的環(huán)境變量添加對(duì)應(yīng)變量

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

11. 無(wú)法連接倉(cāng)庫(kù):Command "git ls-remote -h -- xxx.git HEAD" returned status code 128:

Bash
無(wú)法連接倉(cāng)庫(kù):Command "git ls-remote -h --XXX.git HEAD" returned status code 128:
stdout:
stderr: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@??? WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!???? @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:xxx/xx.
Please contact your system administrator.
Add correct host key in /Users/xxx/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/xxx/.ssh/known_hosts:3
Host key for XXX.com has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

用以下命令刷新sshkey,底下的targetAddress替換成實(shí)際的倉(cāng)庫(kù)地址(或者ip)

Bash
ssh-keygen -R targetAddress

刷新完之后,找到/Users/qsgdmj/.ssh/的 id_rsa(私鑰)和id_rsa_pub(公鑰),在jenkins后臺(tái)添加對(duì)應(yīng)的私鑰,在倉(cāng)庫(kù)賬戶上添加公鑰。之后可能會(huì)出現(xiàn)下方12.No ED25519 的問(wèn)題。繼續(xù)按下方解決方式處理

12.No ED25519 host key is known for git.xxx.com and you have requested strict checking

在命令行執(zhí)行g(shù)it.exe ls-remote -h -- git@git.xxx.com:xxx/xxx.git,彈出提示之后輸入yes

13.Jenkins更換ip地址后,本地訪問(wèn)localhost:8080 和通過(guò)ip訪問(wèn)均無(wú)法訪問(wèn)jenkins后臺(tái)

命令行執(zhí)行一下指令

Bash
brew services list

可以看到homebrew.mxcl.jenkins.plist配置所在的位置,打開(kāi)后修改ProgramArguments里的--httpListenAddress=本機(jī)ip。

ProgramArguments的第一個(gè)項(xiàng)為jenkins所在地址,用finder 打開(kāi)該地址/opt/homebrew/opt/jenkins/bin/jenkins

上一級(jí)目錄同樣有一個(gè)文件homebrew.mxcl.jenkins.plist。把該文件的httpListenAddress也改成本機(jī)ip(如果這一步不執(zhí)行可能出現(xiàn)每次restart jenkins時(shí),ip又被重新修改了)

還有就是修改.jenkins/目錄下的jenkins.model.JenkinsLocationConfiguration.xml,將jenkinsUrl改成新的本機(jī)地址,之后調(diào)用brew services restart jenkins

14.Jenkins 執(zhí)行時(shí),有時(shí)候出現(xiàn)構(gòu)建失敗,但是實(shí)際卻顯示成功的情況

比如下面的構(gòu)建日志,中途出現(xiàn)報(bào)錯(cuò)"Build Finished, Result: Failure." 但是最后的構(gòu)建結(jié)果卻是"Finished: SUCCESS"

C#
//省略部分內(nèi)容
Unloading 288 Unused Serialized files (Serialized files now loaded: 0)
Unloading 1538 unused Assets / (1.1 MB). Loaded Objects now: 8442.
Memory consumption went from 286.7 MB to 285.6 MB.
Total: 25.471792 ms (FindLiveObjects: 4.789042 ms CreateObjectMapping: 0.391709 ms MarkObjects: 16.866416 ms? DeleteObjects: 3.421000 ms)

Build Finished, Result: Failure.
Unloading 0 Unused Serialized files (Serialized files now loaded: 0)
//省略部分內(nèi)容
Exiting batchmode successfully now!
[Package Manager] Server::Kill -- Server was shutdown
Finished: SUCCESS

添加Text Finder插件

之后添加構(gòu)建后步驟,Search files or the console log for regular expression(s)

填入之前出現(xiàn)的報(bào)錯(cuò)

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

15.修改Jenkins工作路徑到移動(dòng)硬盤的問(wèn)題與解決

前置工作

由于打包機(jī)為Mac,所以需要先將移動(dòng)硬盤的格式修改為APFS

移動(dòng)硬盤的格式可以右鍵->顯示簡(jiǎn)介 查看。如果已經(jīng)是APFS格式可以跳過(guò)這個(gè)步驟

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

具體操作是命令行輸入diskutil list

可以看到所有的硬盤信息

YAML
/dev/disk0 (internal, physical):
?? #:?????????????????????? TYPE NAME??????????????????? SIZE?????? IDENTIFIER
?? 0:????? GUID_partition_scheme??????????????????????? *251.0 GB?? disk0
?? 1:???????????? Apple_APFS_ISC Container disk1???????? 524.3 MB?? disk0s1
?? 2:?????????? ??????Apple_APFS Container disk3???????? 245.1 GB?? disk0s2
?? 3:??????? Apple_APFS_Recovery Container disk2???????? 5.4 GB???? disk0s3

/dev/disk3 (synthesized):
?? #:?????????????????????? TYPE NAME??????????????????? SIZE?????? IDENTIFIER
?? 0:????? APFS Container Scheme -????????????????????? +245.1 GB?? disk3
???????????????????????????????? Physical Store disk0s2
?? 1:??????????????? APFS Volume Macintosh HD??????????? 11.9 GB??? disk3s1
?? 2:????????????? APFS Snapshot com.apple.os.update-... 11.9 GB??? disk3s1s1
?? 3:??????????????? APFS Volume Preboot???????????????? 9.8 GB???? disk3s2
?? 4:??????????????? APFS Volume Recovery??????????????? 1.6 GB???? disk3s3
?? 5:??????????????? APFS Volume Data??????????????????? 213.2 GB?? disk3s5
?? 6:???????? ???????APFS Volume VM????????????????????? 3.2 GB???? disk3s6

/dev/disk6 (external, physical):
?? #:?????????????????????? TYPE NAME??????????????????? SIZE?????? IDENTIFIER
?? 0:???? FDisk_partition_scheme??????????????????????? *1.0 TB???? disk6
?? 1:? ????????????????Apple_HFS T7????????????????????? 1.0 TB???? disk6s1


?

可以看到信息/dev/disk6 (external, physical)

external代表移動(dòng)硬盤,disk6為該移動(dòng)硬盤的編號(hào)

之后命名行輸入

diskutil eraseDisk JHFS+ T7 disk6

T7為新的硬盤名稱,disk6為對(duì)應(yīng)編號(hào)

之后在程序塢打開(kāi)磁盤工具,選擇該移動(dòng)硬盤,選擇抹掉

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

之后選擇對(duì)應(yīng)的文件格式

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

至此硬盤設(shè)置工作完成。

工作路徑的修改

工作路徑修改到移動(dòng)硬盤會(huì)遇到一些權(quán)限問(wèn)題。具體操作為

(1)將jenkins的配置config.xml的workSpace修改為

? <workspaceDir>Volumes/T7/Workspace/JenkinsWorkspace/${ITEM_FULL_NAME}</workspaceDir>

(移動(dòng)硬盤名稱為T7,對(duì)應(yīng)路徑為Volumes/T7)

之后執(zhí)行 brew services restart jenkins 重啟jenkins

這時(shí)直接運(yùn)行會(huì)報(bào)錯(cuò)"Operation not permitted",原因是由于mac本身權(quán)限管理,導(dǎo)致Jenkins無(wú)法直接對(duì)移動(dòng)硬盤進(jìn)行操作。

(2)參照該網(wǎng)址內(nèi)的權(quán)限修改操作,設(shè)置完全磁盤權(quán)限。https://stackoverflow.com/questions/61248588/jenkins-unable-to-start-jenkins-on-an-external-hard-drive

  • open terminal
  • brew services stop jenkins
  • System Preferences -> Security and Privacy -> Full Disk Access
  • Click the lock to enable changes
  • Drag and drop java_home from the finder window into the allowed list.
  • brew services start jenkins

這里需要注意用which java時(shí),顯示的/usr/bin/java 實(shí)際上是一個(gè)映射,并不是正在java_home的位置

需要執(zhí)行/usr/libexec/java_home -V 可以看到真正的java_home路徑

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

之后重啟jenkins

(3)修改完磁盤訪問(wèn)權(quán)限,如果jenkins還是無(wú)法對(duì)移動(dòng)硬盤進(jìn)行操作,可以關(guān)閉Mac的sip設(shè)置

具體操作為

  • 重啟mac,并長(zhǎng)按command+r 直到重啟進(jìn)度條出現(xiàn)。這時(shí)會(huì)進(jìn)入Mac的恢復(fù)模式
  • 選擇左上角的實(shí)用工具->終端

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

  • 命令行執(zhí)行 csrutil disable 之后重啟mac

(4)擁有磁盤權(quán)限之后,jenkins執(zhí)行任務(wù)時(shí)還可能出現(xiàn)如下問(wèn)題:未受保護(hù)的ssh key。

Plain Text
stderr: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@???????? WARNING: UNPROTECTED PRIVATE KEY FILE!????????? @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Permissions 0777 for '/Volumes/T7/Workspace/JenkinsWorkspace/xxx/jenkins-gitclient-sshxxx.key' are too open.

這時(shí)候需要到Jenkins后臺(tái),將對(duì)應(yīng)的ssh key的范圍由全局修改為系統(tǒng)

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

至此,問(wèn)題全部解決,可以正常執(zhí)行Jenkins任務(wù)

16.unity console 報(bào)錯(cuò)Library/Bee/artifacts/mvdfrm/Unity.RenderPipeline.Universal.ShaderLibrary.ref.dll_FD8EDE77A08A7963.mvfrm

刪除Library下的Bee目錄,然后重新啟動(dòng)Unity

17.because this command failed to write the following output files: library/bee/artifacts/mvdfrm/unityengine.testrunner.ref.dll

在MacOs系統(tǒng)上,當(dāng)Unity工程放在移動(dòng)硬盤上進(jìn)行安卓打包的時(shí)候會(huì)出現(xiàn)這個(gè)問(wèn)題。原因是移動(dòng)硬盤的格式問(wèn)題??梢詤⒄諉?wèn)題15的前置工作,將移動(dòng)硬盤格式修改為APFS

18. TestFlight上傳時(shí)出現(xiàn)A required agreement is missing or has expired的報(bào)錯(cuò)

詳細(xì)報(bào)錯(cuò)內(nèi)容如下

Ada
?NSUnderlyingError = "Error Domain=IrisAPI Code=-19241 \"A required agreement is missing or has expired.\" UserInfo={status=403, detail=This request requires an in-effect agreement that has not been signed or has expired., id=xxxx, code=FORBIDDEN.REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED, title=A required agreement is missing or has expired., links={\n??? see = \"/agreements\";\n}, NSLocalizedDescription=A required agreement is missing or has expired., NSLocalizedFailureReason=This request requires an in-effect agreement that has not been signed or has expired.}";
??? "iris-code" = "FORBIDDEN.REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED";

登錄appstore后臺(tái),發(fā)現(xiàn)是因?yàn)橛行碌脑S可證協(xié)議

unity 自動(dòng)化打包,Unity開(kāi)發(fā)方案和知識(shí),jenkins,unity

點(diǎn)擊協(xié)議上的鏈接同意協(xié)議即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-525709.html

到了這里,關(guān)于通過(guò)Jenkins實(shí)現(xiàn)Unity多平臺(tái)自動(dòng)打包以及相關(guān)問(wèn)題解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 自動(dòng)化構(gòu)建平臺(tái)(五)之Jenkins初始化配置以及插件安裝操作

    上一篇我們介紹了Jenkins的安裝和登錄等相關(guān)操作,今天給大家介紹登錄Jenkins后的一些初始化配置和插件安裝的操作。因?yàn)槿绻褂肑enkins來(lái)進(jìn)行代碼構(gòu)建,必須先安裝相關(guān)的插件和配置一些系統(tǒng)環(huán)境變量才行。 這里我列舉了才代碼構(gòu)建階段Jenkins需要的主要插件,包含:

    2024年03月27日
    瀏覽(18)
  • Unity打包與編譯,后處理以及自動(dòng)化等等(持續(xù)更新)

    Unity打包與編譯,后處理以及自動(dòng)化等等(持續(xù)更新)

    官網(wǎng)地址:https://docs.unity3d.com/cn/2022.1/ScriptReference/index.html C:UserssongzhewenAppDataLocalUnityEditor C:UserssongzhewenAppDataLocalLowlongtuNRJ 然后打包,拉跨,各種失敗 我也是碰到了這個(gè)錯(cuò)誤,用的Unity 2020.3.22。Gradle文件選擇的是Unity下載的,應(yīng)該是6.11的版本。Android SDK下載了31.0.0。但

    2023年04月22日
    瀏覽(48)
  • jenkins+gitlab實(shí)現(xiàn)Android自動(dòng)打包填坑之旅

    jenkins+gitlab實(shí)現(xiàn)Android自動(dòng)打包填坑之旅

    1.首先你需要知道你想要實(shí)現(xiàn)的Android自動(dòng)打包的Android項(xiàng)目的一些環(huán)境配置及需要使用的一些開(kāi)發(fā)版本。 聲明:本文 Android項(xiàng)目基于:1.jdk11 2.SDK無(wú)要求 3.gradle無(wú)要求(同Manven一樣為項(xiàng)目自動(dòng)化構(gòu)建開(kāi)源工具) 注:本文適用于 任何版本 jdk SDK Gradle。 了解Android項(xiàng)目使用到的東西

    2024年01月25日
    瀏覽(19)
  • uniapp:HbuildeX項(xiàng)目實(shí)現(xiàn)jenkins自動(dòng)化打包上傳

    uniapp:HbuildeX項(xiàng)目實(shí)現(xiàn)jenkins自動(dòng)化打包上傳

    前序: 基于HBuilderX創(chuàng)建的項(xiàng)目。 配置uniapp 指令式打包APP、微信小程序、H5。 ubuntu系統(tǒng)上的jenkins部署基礎(chǔ)指令,發(fā)送給windows服務(wù)器上,windows服務(wù)器使用HBuilderX軟件的cli.exe執(zhí)行相關(guān)cli命令打包,然后jenkins再調(diào)用接口下載打包后的文件。 可實(shí)現(xiàn)多線程同時(shí)打包。 大致流程:

    2024年02月16日
    瀏覽(22)
  • QT+jenkins window環(huán)境實(shí)現(xiàn)一鍵自動(dòng)化構(gòu)建打包簽名發(fā)布

    QT+jenkins window環(huán)境實(shí)現(xiàn)一鍵自動(dòng)化構(gòu)建打包簽名發(fā)布

    ? ? ? ? 1.官網(wǎng)下載地址:?Jenkins download and deployment,下載最新版本的安裝包并安裝。安裝過(guò)程中,會(huì)要求你輸入端口號(hào)并記住。 ? ? ? ? 2.java下載地址:Java Downloads | Oracle,下載最新版本的安裝包并安裝。 ? ? ? ? 3.瀏覽器輸入網(wǎng)址:127.0.0.1: port, port為端口號(hào),默認(rèn)8080,安

    2024年02月01日
    瀏覽(28)
  • 【jenkins】jenkins流水線構(gòu)建打包jar,生成docker鏡像,重啟docker服務(wù)的過(guò)程,在jenkins上一鍵完成,實(shí)現(xiàn)提交代碼自動(dòng)構(gòu)建的功能

    【jenkins】jenkins流水線構(gòu)建打包jar,生成docker鏡像,重啟docker服務(wù)的過(guò)程,在jenkins上一鍵完成,實(shí)現(xiàn)提交代碼自動(dòng)構(gòu)建的功能

    ?【jenkins】jenkins流水線構(gòu)建打包jar,生成docker鏡像,重啟docker服務(wù)的過(guò)程,在jenkins上一鍵完成,實(shí)現(xiàn)提交代碼自動(dòng)構(gòu)建,服務(wù)重啟,服務(wù)發(fā)布的功能。一鍵實(shí)現(xiàn)。非常的舒服。 這是 shell腳本? 腳本名稱: startup.sh ? 本腳本的功能是在jenkins 構(gòu)建完項(xiàng)目后,通過(guò)jar包生成dock

    2024年02月11日
    瀏覽(98)
  • 通過(guò) Postman+Newman+Jenkins 進(jìn)行接口自動(dòng)化測(cè)試和進(jìn)一步實(shí)現(xiàn) CI

    目錄 前言: Postman 部分 Collection 或者說(shuō)測(cè)試集的建立 Postman 使用詳解 測(cè)試工具 mock server Newman 的安裝和使用 newman 的使用 對(duì) SSL 的支持 newman 第三版以后(目前已經(jīng)是 4.3.1)可以支持通過(guò) CLI 選項(xiàng)來(lái)支持 SSL 對(duì) newman 配置代理:通過(guò)對(duì) Postman 的 request 環(huán)境變量進(jìn)行設(shè)置來(lái)完成代

    2024年02月16日
    瀏覽(22)
  • 如何通過(guò)Android平臺(tái)的API實(shí)現(xiàn)5G網(wǎng)絡(luò)的支持 安卓系統(tǒng)版本和5g網(wǎng)絡(luò)相關(guān)【一】

    如何通過(guò)Android平臺(tái)的API實(shí)現(xiàn)5G網(wǎng)絡(luò)的支持 安卓系統(tǒng)版本和5g網(wǎng)絡(luò)相關(guān)【一】

    前面分享了兩篇5G基帶相關(guān)的移植修改博文。 安卓高通機(jī)型的基帶移植 修改 編譯的相關(guān) 增加信號(hào) 支持5G等【一】 安卓高通機(jī)型的基帶移植 修改 編譯的相關(guān) 增加信號(hào) 支持5G等【二】 今天的帖子聊聊安卓版本與5G網(wǎng)絡(luò)與機(jī)型和修改之間相關(guān)的話題。眾所周知,目前的機(jī)型基本

    2024年02月09日
    瀏覽(29)
  • jenkins-自動(dòng)化打包部署

    jenkins-自動(dòng)化打包部署

    環(huán)境: ????????centos 7.2或者更新 ????????rmp包:官方下載地址 Redhat Jenkins Packages ????????java-1.8.0 安裝: 配置:jenkins 配置文件?/etc/sysconfig/jenkins? ,可以根據(jù)需求自行修改 訪問(wèn)web 并進(jìn)行配置 稍等一會(huì),就可以正常登錄了 根據(jù)需要安裝自定義插件,本次選擇是推

    2024年02月13日
    瀏覽(21)
  • Jenkins自動(dòng)化打包腳本

    Jenkins自動(dòng)化打包腳本

    jenkins可以設(shè)置定時(shí)任務(wù)打包,也已手動(dòng)點(diǎn)按鈕打包,還可以通過(guò)執(zhí)行http請(qǐng)求打包,今天我們就通過(guò)shell腳本,通過(guò)curl命令進(jìn)行jenkins打包。 2.1 在jenkins上構(gòu)建項(xiàng)目 設(shè)置觸發(fā)器

    2024年02月13日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包