iOS+Jenkins持續(xù)構建-編譯打包上傳

實驗步驟

1.安裝Xcode(不做贅述)

2.Jenkins安裝插件: Xcode integration

1.png

3.Jenkins安裝插件: Keychains and Provisioning Profiles Management

2.png

4.git shhkey 配置(有的同學可跳過哩俭,按照初學者來寫的)

終端輸入:
ssh-keygen -t rsa -C"郵箱"
ssh-add ~/.ssh/id_rsa
cat /Users/用戶名/.ssh/id_rsa.pub

嘗試使用一下

  • 錯誤一: unable to get local issuer certificate
  • 終端輸入命令去掉git的ssl驗證: git config --global http.sslVerify false
3.png

復制公鑰至GIT

4.png

私鑰復制凡资,待會兒有用

終端輸入:
cat /Users/用戶名/.ssh/id_rsa

5.新建自由風格JOB

5.png

6.配置git

輸入第4步拿到的私鑰

6.png

保存垦藏,注意使用.git地址

7.png

7.配置證書

先將證書導入鑰匙串
將/Users/用戶名/Library/MobileDevice文件夾拷貝到/Users/Shared/Jenkins/Library
將/Users/用戶名/Library/Keychains/下的login.keychain及l(fā)ogin.keychain-db這兩個文件拷貝到/Users/Shared/Jenkins/Library/Keychains文件夾下面(我在10.13上有這兩個文件伞访,而10.14上只有-db文件厚掷,將-db改為db,在將兩個文件拷貝)

8.png

8.上傳證書

回到jenkins,選擇Keychains and Provisioning Profiles Management插件進行配置
選擇profile和login.db文件進行上傳掩驱,需要幾個證書就需要多少profile文件
Code Signing Identity 可以在鑰匙串-證書-右鍵簡介查看
Provisioning Profiles Directory Path為

/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles 
9.png

9.繼續(xù)配置JOB

勾選Keychains and Code Signing Identities昙篙、Mobile Provisioning Profiles選擇對應證書诱咏,直接保存。

10.png

10.繼續(xù)配置腳本

11.png

參考腳本:

#!/bin/sh
# appName
export K_APP_NAME=""
# 項目名稱
export K_PROJECT_NAME=""
# xcodeproj
export K_XCODEPROJ_NAME=".xcodeproj或.xcworkspace"
# project
export K_PROJECT_WORKSPACE_NAME="project"
# scheme名稱
export K_SCHEME=""
# 編譯類型(用于區(qū)分發(fā)布還是AdHoc模式,可以忽略)
export K_BUILD_TYPE="Development"
# 編譯配置(主要根據自己的多環(huán)境進行配置,比如Release,Debug等)
export K_CONFIGURATION="Release"


# 包名前綴
export K_IPA_PREFIX=""
# 包類型
export K_IPA_TYPE="_alpha_"
# export
export K_EXPORT="export"
# Resources
export K_RESOURCES="Resources"


# xcode環(huán)境
export XCODE=/usr/bin

# 項目workspace
export K_WORK_SPACE=$WORKSPACE/$K_PROJECT_NAME/$K_XCODEPROJ_NAME/$K_PROJECT_WORKSPACE_NAME.xcworkspace

# 工程目錄
export K_PRO_SPACE=$WORKSPACE/$K_PROJECT_NAME

# info.plist路徑
export K_PROJECT_INFOPLIST_PATH=$WORKSPACE/$K_PROJECT_NAME/$K_APP_NAME/$K_RESOURCES/項目名-Info.plist;

# cd 工程目錄
cd $K_PRO_SPACE

# 獲取當前版本號
export K_VERSION_PRO=`/usr/bin/agvtool mvers -terse1`

# 取build值
export K_BUILD_VERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" ${K_PROJECT_INFOPLIST_PATH})

# ExportOptions位置
export ExportOptionsPlistPath=/Users/用戶/Desktop/項目名-Release/ExportOptions.plist

# 包釋放根目錄
export K_DIST_ROOT_PATH=/Users/用戶/Desktop/項目名-Release

# 獲取時間
export K_JENKINS_TIME=`date +%Y%m%d%H%M`

# 包/時間
export K_DIST_PATH=$K_DIST_ROOT_PATH/$K_JENKINS_TIME

# xcarchive文件
export K_ARCHIVE_PATH=$K_DIST_PATH/$K_APP_NAME.xcarchive

# 導出目錄
export K_EXPORT_PATH=$K_DIST_PATH/$K_EXPORT

# 包命名規(guī)則示范:
export K_IPA_NAME=$K_IPA_PREFIX$K_VERSION_PRO$K_IPA_TYPE$K_BUILD_VERSION"_"$K_JENKINS_TIME


###############################################################################################################

# 目錄判斷
if [ ! -d $K_DIST_ROOT_PATH ]; 
then
   mkdir $K_DIST_ROOT_PATH
fi

if [ ! -d $K_DIST_PATH ];
then
   mkdir $K_DIST_PATH
fi


# 解鎖鑰匙串
# security unlock-keychain -p "電腦密碼" ~/Library/Keychains/login.keychain-db

# clean
$XCODE/xcodebuild clean  -workspace $K_WORK_SPACE -destination generic/platform=iOS -scheme $K_SCHEME -configuration $K_CONFIGURATION -quiet

# build
$XCODE/xcodebuild build -workspace $K_WORK_SPACE -destination generic/platform=iOS -scheme $K_SCHEME -configuration $K_CONFIGURATION -quiet

# archive
$XCODE/xcodebuild archive -archivePath $K_ARCHIVE_PATH -workspace $K_WORK_SPACE -destination generic/platform=iOS -scheme $K_SCHEME 

$XCODE/xcodebuild -exportArchive -archivePath $K_ARCHIVE_PATH -exportPath $K_EXPORT_PATH -exportOptionsPlist $ExportOptionsPlistPath -allowProvisioningUpdates

cd $K_DIST_PATH

# 移除打包生成的.xcarchive文件
rm -rf 項目名.xcarchive


cd $K_DIST_PATH/$K_EXPORT

# 重命名包文件
mv 項目名.ipa $K_IPA_NAME.ipa

echo $K_IPA_NAME

# 包本地路徑
export K_APP_PATH=$K_DIST_PATH/$K_EXPORT/$K_IPA_NAME.ipa

echo $K_APP_PATH

# svn上傳
svn import -m "Jenkins upload ipa" $K_APP_PATH http://用戶名@上傳目錄/$K_IPA_NAME.ipa --username 用戶名 --password 密碼


11.構建一次

12.png
  • 失敗了查看控制臺輸出日志
    錯誤原因:Failed to copy /Users/Shared/Jenkins/Home/kpp_upload/ 拷貝描述文件失敗了同蜻。
    開放Jenkins下面Library權限早处,參照MAC Jenkins安裝》第一步。
    再跑一次默责,結果如下:
    錯誤:Command CodeSign failed with a nonzero exit code 簽名失敗。
    修正: 打開鑰匙串杖虾,設置證書可信任或者打開xcode媒熊,在對應項目上signing & Capabilities簽名欄設置信任配置
13.png

重新做一次第七步芦鳍,也就是替換login.keychain ,然后在 Keychains and Provisioning Profiles Management重新上傳login.keychain

再次構建间影,就可以了

注意我這里導出的包放在了桌面茄茁,把desktop讀寫權限也開一下巩割。

我的打包執(zhí)行后包存放目錄

14.png
  • 如果還報錯Command CodeSign failed with a nonzero exit code
    可以嘗試把腳本中的打開鑰匙串代碼放開注釋
  • 2020-04-23補充
    如果更換了證書宣谈,在進行打包導出的時候需要更換ExportOption.Plist文件
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
禁止轉載,如需轉載請通過簡信或評論聯系作者漩怎。
  • 序言:七十年代末嗦嗡,一起剝皮案震驚了整個濱河市侥祭,隨后出現的幾起案子,更是在濱河造成了極大的恐慌矮冬,老刑警劉巖胎署,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異恢筝,居然都是意外死亡,警方通過查閱死者的電腦和手機聊训,發(fā)現死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門恢氯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋拟,“玉大人,你說我怎么就攤上這事敢靡⌒ル剩” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵贝椿,是天一觀的道長陷谱。 經常有香客問我,道長渣窜,這世上最難降的妖魔是什么宪躯? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任访雪,我火速辦了婚禮,結果婚禮上蛤虐,老公的妹妹穿的比我還像新娘肝陪。我一直安慰自己,他們只是感情好饲常,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柒竞,像睡著了一般播聪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稼虎,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天霎俩,我揣著相機與錄音沉眶,去河邊找鬼。 笑死柳击,一個胖子當著我的面吹牛传藏,可吹牛的內容都是我干的彤守。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼侈离,長吁一口氣:“原來是場噩夢啊……” “哼筝蚕!你這毒婦竟也來了起宽?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绿映,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丐一,有當地人在樹林里發(fā)現了一具尸體淹冰,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡樱拴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了拧略。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘪弓。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡腺怯,死狀恐怖,靈堂內的尸體忽然破棺而出虑乖,到底是詐尸還是另有隱情晾虑,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布糙捺,位于F島的核電站笙隙,受9級特大地震影響,放射性物質發(fā)生泄漏签钩。R本人自食惡果不足惜坏快,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一莽鸿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臼予,春花似錦、人聲如沸粘拾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疏之。三九已至暇咆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間其骄,已是汗流浹背扯旷。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留毯炮,地道東北人耸黑。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓崎坊,卻偏偏與公主長得像洲拇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子男翰,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容