Jenkins-iOS自動(dòng)化打包

Jenkins 是什么?

Jenkins是一款開源 CI&CD 軟件爆存,用于自動(dòng)化各種任務(wù)潮尝,包括構(gòu)建、測試和部署軟件获诈。
Jenkins 支持各種運(yùn)行方式敞贡,可通過系統(tǒng)包泵琳、Docker 或者通過一個(gè)獨(dú)立的 Java 程序。

環(huán)境部署

Java安裝

由于Jenkins 依賴于Java誊役,所以在安裝Jenkins前获列,需要先檢查是否已安裝Java環(huán)境。 在終端輸入命令進(jìn)行檢測:

java -version
  • 已安裝
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
  • 未安裝
    建議安裝Oracle Java 版本蛔垢,否則Jenkins配置節(jié)點(diǎn)(解決Linux上iOS打包)需要再次升級击孩。
    Java官網(wǎng)下載地址

Jenkins安裝

Jenkins官網(wǎng)

1.Homebrew安裝(推薦)
Jenkins.png
Jenkins下載.png
Jenkins安裝.png
2.下載.war包方式安裝

jenkinschina官網(wǎng)下載。建議下載Jenkins 2.263.4版本啦桌,因?yàn)樽钚掳姹敬嬖趌ogin.keychain無法上傳的bug溯壶。

war.png

登錄

在瀏覽器頁面輸入以下地址,就打開Jenkins管理頁面了甫男。

http://localhost:8080/
localhost.png

輸入,點(diǎn)擊繼續(xù)


自定義安裝插件.png

等待安裝完成


等待安裝完成.png

可能會失敗验烧,點(diǎn)擊重試


失敗重試.png

安裝成功后板驳,創(chuàng)建管理員用戶

創(chuàng)建用戶.png

實(shí)例配置,默認(rèn)


實(shí)例配置.png
就緒.png
首頁.jpg

插件管理

插件管理.png
keychains.png

為了支持xcode打包碍拆,需要在可選插件中選擇我們需要的插件進(jìn)行安裝:
①Xcode integration:打包的插件,所以iOS的打包只能部署在Mac系統(tǒng)
②GIT plugin
③Git Parameter
④GitLab
⑤Keychains and Provisioning Profiles Management: 證書與描述文件的管理

配置項(xiàng)目的訪問SSH私鑰

如果你的電腦沒有配置過SSH若治,此處以碼云為例,可看碼云官方文檔感混,配置好SSH后再給Jenkins配置端幼。

Manage Credentials.png

添加憑證


添加憑證.png

創(chuàng)建一個(gè)SSH


SSH.png

SSH查看
終端執(zhí)行一下操作,獲取公鑰

cat ~/.ssh/id_rsa.pub
結(jié)果.png

注意:Username(用戶名)是gitlab賬號弧满。此處也可以直接配置用戶名與密碼


用戶名密碼 .png

配置項(xiàng)目依賴的證書與描述文件

文件上傳配置有問題婆跑,通過腳本文件上傳。

任務(wù)

建立任務(wù)

新建.png

構(gòu)建配置

代碼庫地址


GitHub配置.png

同一時(shí)間構(gòu)建個(gè)數(shù)及開啟構(gòu)建版本之間的間隔


構(gòu)建配置.png

舊版本處理策略

舊版本處理策略.png

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

添加參數(shù).png
添加參數(shù).png
Git參數(shù).png
選項(xiàng)參數(shù).png
選項(xiàng)參數(shù).png

源碼管理

倉庫&憑證.png
分支.png
克隆.png

構(gòu)建環(huán)境

構(gòu)建環(huán)境.png

Delete workspace before build starts:在開始構(gòu)建之前刪除工作區(qū)
Add timestamps to the Console Output:向控制臺輸出添加時(shí)間戳

Build Steps

新增.png

shell.png

保存

Jenkins配置節(jié)點(diǎn)(解決Linux上iOS打包)

JAVA環(huán)境升級

升級最新JDK

MAC 共享

共享.png

新建節(jié)點(diǎn)

Manage Jenkins(系統(tǒng)管理) -> Manage Nodes and Clouds(節(jié)點(diǎn)管理) -> 新建節(jié)點(diǎn)


名稱.png
IP.png
可用性.png
節(jié)點(diǎn)屬性.png
完成.png

項(xiàng)目節(jié)點(diǎn)配置

節(jié)點(diǎn)配置.png

其它

上傳jir

使用的是fir-cli上傳庭呜,下面幾個(gè)連接提供參考
介紹:https://github.com/FIRHQ/fir-cli
安裝:http://blog.betaqr.com/use-fir-cli-in-jenkins/
使用:https://github.com/FIRHQ/fir-cli/blob/master/doc/publish.md

gem install fir-cli
fir login "API token"
fir me
fir publish "$export_ipa_path/$ipa_name.ipa"
打包完成滑进,發(fā)布釘釘群

1.在需要發(fā)消息的釘釘群,點(diǎn)擊群設(shè)置 - 智能群助手 - 添加機(jī)器人


添加機(jī)器人.png

選擇自定義


選擇自定義.png

機(jī)器人管理


機(jī)器人管理.png

獲取Webhook


Webhook.png
#https://github.com/PGYER/fir-cli/blob/master/doc/publish.md
gem install fir-cli
fir login "****"
fir me
fir publish "$export_ipa_path/$ipa_name.ipa" --dingtalk-access-token="access_token"

curl 'https://oapi.dingtalk.com/robot/send?access_token=****' \
 -H 'Content-Type: application/json' \
 -d '{"msgtype": "markdown","markdown": {"title": "***","text": "#### ***  \n > 版本號:1.0.0\n > ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n > ###### 10點(diǎn)20分發(fā)布 [***](https://www.baidu.com/) \n"},"at": {"isAtAll": true}}'

內(nèi)容中必須包含關(guān)鍵字

問題

1.權(quán)限不足
AutoPackageScript.sh: line 43: ./tiensinstall.sh: Permission denied

解決方案:
到目標(biāo)腳本的文件夾 執(zhí)行

chmod 777 ./*.sh

然后回車 輸入密碼 就行了
參考文檔:執(zhí)行 ./install.sh 報(bào)錯(cuò) Permission denied

2.
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

解決方案:

edy@192 ~ % sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
Password:
edy@192 ~ % xcodebuild -showsdks
DriverKit SDKs:
    DriverKit 21.4                  -sdk driverkit21.4

iOS SDKs:
    iOS 16.0                        -sdk iphoneos16.0

iOS Simulator SDKs:
    Simulator - iOS 16.0            -sdk iphonesimulator16.0

macOS SDKs:
    macOS 12.3                      -sdk macosx12.3
    macOS 12.3                      -sdk macosx12.3

tvOS SDKs:
    tvOS 16.0                       -sdk appletvos16.0

tvOS Simulator SDKs:
    Simulator - tvOS 16.0           -sdk appletvsimulator16.0

watchOS SDKs:
    watchOS 9.0                     -sdk watchos9.0

watchOS Simulator SDKs:
    Simulator - watchOS 9.0         -sdk watchsimulator9.0

edy@192 ~ % xcrun --sdk iphoneos --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk

參考文檔:xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Deve

3.在手動(dòng)指定Pofile文件的時(shí)獲取mobileprovision_name
  • 描述文件-顯示簡介
  • 終端輸入cat Pofile路徑回車

參考文檔:https://blog.csdn.net/saw471/article/details/111314268

4.pod: command not found

這個(gè)情況一般是由于 jenkins 沒有設(shè)置正確的PATH環(huán)境變量導(dǎo)致. 執(zhí)行

 echo $PATH

PATH募谎,記錄下輸出的結(jié)果
在 jenkins 中系統(tǒng)管理-系統(tǒng)設(shè)置中扶关,找到 環(huán)境變量(Environment variables)
在 key 中填寫 PATH,在 value 中填寫第一步中輸出的結(jié)果保存即可.

sudo vi ~/.bash_profile
//插入
export PATH=/xxxxxxxx(ruby絕對路徑)/bin:$PATH//(/Users/edy/.rvm/rubies/ruby-3.0.0/bin:$PATH)
export PATH=/bin:/usr/bin:usr/sbin:usr/local/bin:$PATH //(系統(tǒng)環(huán)境有錯(cuò)的也可以修復(fù) 本質(zhì)就是讓shell在運(yùn)行的之后可以去指定路徑尋找可執(zhí)行文件)
//按一下esc 再按shift+z+z 保存退出

terminal 中輸入 source ~/.bash_profile 回車刷新配置文件即可

參考文檔:
pod: command not found

5.關(guān)閉蓋子設(shè)備休眠

解決 macbook m1 蘋果筆記本電腦 關(guān)閉蓋子 休眠

參考文檔

4.虛擬機(jī)部署Jenkins
5.Jenkins的使用
iOS Jenkins自動(dòng)化打包 上傳fir数冬、蒲公英节槐、郵件、釘釘提醒
iOS 自動(dòng)化打包2 Jenkins + GitLab
iOS自動(dòng)化打包 Jenkins+Gitlab+Fastlane+蒲公英+釘釘
jenkins(1)-部分插件由于缺少依賴無法加載。要恢復(fù)這些插件提供的功能铜异,需要修復(fù)這些問題并重啟Jenkins的解決辦法
Jenkins - iOS Build地来、Archive、Upload
ios 自動(dòng)打包開發(fā)
iOS 底層原理38:自動(dòng)化打包(一)Xcode + Shell腳本
Jenkins參數(shù)化構(gòu)建(This project is parameterized)
探究 Xcode 命令行用法一:Xcode 構(gòu)建必備認(rèn)知

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熙掺,一起剝皮案震驚了整個(gè)濱河市未斑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌币绩,老刑警劉巖蜡秽,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缆镣,居然都是意外死亡芽突,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門董瞻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寞蚌,“玉大人,你說我怎么就攤上這事钠糊⌒樱” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵抄伍,是天一觀的道長艘刚。 經(jīng)常有香客問我,道長截珍,這世上最難降的妖魔是什么攀甚? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮岗喉,結(jié)果婚禮上秋度,老公的妹妹穿的比我還像新娘。我一直安慰自己钱床,他們只是感情好荚斯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诞丽,像睡著了一般鲸拥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僧免,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天刑赶,我揣著相機(jī)與錄音,去河邊找鬼懂衩。 笑死撞叨,一個(gè)胖子當(dāng)著我的面吹牛金踪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牵敷,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼胡岔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了枷餐?” 一聲冷哼從身側(cè)響起靶瘸,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毛肋,沒想到半個(gè)月后怨咪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡润匙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年诗眨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孕讳。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匠楚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芋簿,到底是詐尸還是另有隱情蟀苛,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站梅鹦,受9級特大地震影響裆甩,放射性物質(zhì)發(fā)生泄漏嗤栓。R本人自食惡果不足惜锭弊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昨凡。 院中可真熱鬧爽醋,春花似錦便脊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至送讲,卻和暖如春惋啃,著一層夾襖步出監(jiān)牢的瞬間边灭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工称簿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰帽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓授药,卻偏偏與公主長得像悔叽,于是被迫代替她去往敵國和親爵嗅。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容