Jenkins-iOS自動(dòng)化構(gòu)建及相關(guān)問題

前言

為了方便測(cè)試打包,提高速度,我們?cè)谝慌_(tái)新的機(jī)器部署Jenkins,前兩年雖然已經(jīng)做過一次Jenkins的安裝以及自動(dòng)化,但是已經(jīng)時(shí)隔三年,Jenkins也在不斷的更新,這次安裝部署過程中,還是遇見了不少問題的,下面是我的在部署Jenkins過程中的一些記錄。

安裝方式

之前安裝Jenkins,我使用的是.pkg文件,在Jenkins官網(wǎng)中選擇穩(wěn)定版(LTS)或者開發(fā)版,但是目前官方在MacOS上推薦是用Homebrew進(jìn)行安裝。
使用brew以下方式安裝:
最新版本

//安裝
brew install jenkins
//啟動(dòng)服務(wù)
brew services start jenkins
//重啟服務(wù)
brew services restart jenkins
//更新服務(wù)
brew upgrade jenkins

LTS 版本

//安裝
brew install jenkins-lts
//啟動(dòng)服務(wù)
brew services start jenkins-lts
//重啟服務(wù)
brew services restart jenkins-lts
//更新服務(wù)
brew upgrade jenkins-lts

開啟服務(wù)

我選擇的是最新版本,在終端執(zhí)行brew install jenkins等待片刻,安裝完成使用命令brew services start jenkins開啟Jenkins服務(wù)。
瀏覽器中輸入127.0.0.1:8080,進(jìn)入Jenkins頁面,具體可參考iOS Jenkins自動(dòng)化打包

  • 輸入密碼
  • 安裝推薦插件
  • 創(chuàng)建管理員賬戶(如果不創(chuàng)建,就是admin,密碼就是安裝時(shí)的解鎖密碼)
  • ....
  • 完成

配置局域網(wǎng)內(nèi)訪問

找到下面的路徑,修改homebrew.mxcl.jenkins.plist修改其文件中的--httpListenAddress=x.x.x.x,其中x.x.x.x是你本機(jī)的ip地址,這樣在同一局域網(wǎng)下的別的機(jī)器就可以直接訪問Jenkins了。

/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
修改遠(yuǎn)程訪問地址.png

安裝插件

請(qǐng)注意,這里是和文章iOS Jenkins自動(dòng)化打包不太一致,這里沒有安裝Keychains and Provisioning Profiles Management插件,因?yàn)檫@個(gè)插件在出現(xiàn)了無法上傳keychain 和 profile文件的問題

0-1添加插件.png
0-2安裝Xcode插件.png

添加Job

1-0創(chuàng)建job.png

項(xiàng)目配置

1. General

1-2General-丟棄構(gòu)建.png

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

這里可以配置你任何想?yún)?shù)化的環(huán)境變量,比如分支、比如Debug或者Release。。。。

1-3參數(shù)化構(gòu)建.png

3. 源碼管理

2-0源碼管理.png
2-1添加憑證.png

4. 配置CocoaPods腳本

#!/bin/bash -ilex
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

pod install
echo "======pod 完成"


5. 構(gòu)建- 重中之重

添加Xcode構(gòu)建步驟

5-1增加構(gòu)建步驟-Xcode.png
5-2添加Development Team ID.png
5-3Xcode構(gòu)建setting.png
5-4構(gòu)建-PackApplication.png
5-5設(shè)置keychian路徑.png
5-6Advanced Xcode Build options.png

截止到目前,應(yīng)該是可以進(jìn)行打包了,并且導(dǎo)出ipa了。

上傳fim

在構(gòu)建中添加shell腳本

#讀取登錄信息
#!/bin/bash --login
#!/bin/bash -l
#fir.im 具體可以查看 https://fir.im/docs/publish
filePath=`ls ~/Desktop/qiangungun-package/ios/*.ipa`
apiToken=`curl -X "POST" "https://api.jappstore.com/apps" -H "Content-Type: application/json" -d "{\"type\":\"ios\",\"bundle_id\":\"應(yīng)用的bundle id\",\"api_token\":\"在fim申請(qǐng)的apiToken\"}"`

#接收返回結(jié)果,并且使用jq解析出來key、token、上傳的地址
echo $apiToken > /tmp/result.json
key=`cat /tmp/result.json |jq -r '.cert.binary.key'`
token=`cat /tmp/result.json |jq -r '.cert.binary.token'`
upload_url=`cat /tmp/result.json |jq -r '.cert.binary.upload_url'`
buildVersion=`echo $RANDOM`
#curl命令上傳文件到fir.im
/usr/bin/curl -k -F "key=$key" -F "token=$token" -F "file=@$filePath" -F "x:name=中歐財(cái)富-ios-new" -F "x:version=$APP_Version" -F "x:build=指定的App版本,可參數(shù)化" -F "x:release_type=Adhoc" -F "x:changelog=更新日志可參數(shù)化" $upload_url  --http1.1 #https://up.qbox.me

rm -rf $filePath
echo "=======上傳完成"

問題

問題1:倉庫連接失敗,請(qǐng)查看是否需要連接VPN
error-無倉庫權(quán)限.png
問題2:jq解析失敗
error-jq-command-not-found.png

解決方案:brew install jq

問題3:pod:commend not found
error-pod-command-not-found.png

解決方案:查看cocoapods是否安裝,如果已經(jīng)安裝,并在腳本頭部加上#!/bin/bash -ilex

問題4:上傳fir SSL_connect: SSL_ERROR_SYSCALL in connection to up.qbox.me:443
image.png

導(dǎo)致這個(gè)錯(cuò)誤的原因,就是up.qbox.me訪問不了,這個(gè)地址哪來的呢?是fim官方提供的上傳腳本里面,最后一個(gè)參數(shù)

image.png

解決方案:將這個(gè)地址換成我們上傳fim那一步中,從fim接口中返回的upload_url

問題5 上傳fir curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
curl錯(cuò)誤

在上傳fir中的curl命令中,添加--http1.1指定HTTP版本

有問題,歡迎留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容