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安裝
1.Homebrew安裝(推薦)
2.下載.war包方式安裝
jenkinschina官網(wǎng)下載。建議下載Jenkins 2.263.4版本啦桌,因?yàn)樽钚掳姹敬嬖趌ogin.keychain無法上傳的bug溯壶。
登錄
在瀏覽器頁面輸入以下地址,就打開Jenkins管理頁面了甫男。
http://localhost:8080/
輸入,點(diǎn)擊繼續(xù)
等待安裝完成
可能會失敗验烧,點(diǎn)擊重試
安裝成功后板驳,創(chuàng)建管理員用戶
實(shí)例配置,默認(rèn)
插件管理
為了支持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配置端幼。
添加憑證
創(chuàng)建一個(gè)SSH
SSH查看
終端執(zhí)行一下操作,獲取公鑰
cat ~/.ssh/id_rsa.pub
注意:Username(用戶名)是gitlab賬號弧满。此處也可以直接配置用戶名與密碼
配置項(xiàng)目依賴的證書與描述文件
文件上傳配置有問題婆跑,通過腳本文件上傳。
任務(wù)
建立任務(wù)
構(gòu)建配置
代碼庫地址
同一時(shí)間構(gòu)建個(gè)數(shù)及開啟構(gòu)建版本之間的間隔
舊版本處理策略
參數(shù)化構(gòu)建過程
源碼管理
構(gòu)建環(huán)境
Delete workspace before build starts:在開始構(gòu)建之前刪除工作區(qū)
Add timestamps to the Console Output:向控制臺輸出添加時(shí)間戳
Build Steps
保存
Jenkins配置節(jié)點(diǎn)(解決Linux上iOS打包)
JAVA環(huán)境升級
MAC 共享
新建節(jié)點(diǎn)
Manage Jenkins(系統(tǒng)管理) -> Manage Nodes and Clouds(節(jié)點(diǎn)管理) -> 新建節(jié)點(diǎn)
項(xiàng)目節(jié)點(diǎn)配置
其它
上傳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ī)器人管理
獲取Webhook
#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)知