概述
持續(xù)集成是一種軟件開(kāi)發(fā)實(shí)踐,即團(tuán)隊(duì)開(kāi)發(fā)成員經(jīng)常集成他們的工作叁扫,通過(guò)每個(gè)成員每天至少集成一次仪糖,也就意味著每天可能會(huì)發(fā)生多次集成瘦锹。每次集成都通過(guò)自動(dòng)化的構(gòu)建(包括編譯,發(fā)布,自動(dòng)化測(cè)試)來(lái)驗(yàn)證篇梭,從而盡早地發(fā)現(xiàn)集成錯(cuò)誤币绩。
集成條件
- 同一網(wǎng)段隧甚,局域網(wǎng)或外網(wǎng)
- 配置Jenkins +fastlane +pgyer +webHook强岸,相關(guān)概念文章中做了簡(jiǎn)要說(shuō)明
主要實(shí)現(xiàn)流程
- 上傳代碼到GitLab
- webHook(鉤子)通知Jenkins
- Jenkins收到消息自動(dòng)觸發(fā)構(gòu)建拉取上傳的最新代碼,執(zhí)行Shell腳本完成自動(dòng)化測(cè)試掩宜,自動(dòng)化代碼檢查蔫骂,打包上傳蒲公英等第三方App托管平臺(tái)
- 第三方App托管平臺(tái)通過(guò)短信和郵件通知測(cè)試人員
最終將會(huì)實(shí)現(xiàn):你只用上傳代碼到服務(wù)器指定的分支??,剩下的工作都將自動(dòng)化,你的App最終將會(huì)直接到測(cè)試人員手中牺汤,省去中間重復(fù)無(wú)意義的工作流程
說(shuō)明:
1辽旋,研究持續(xù)集成,遇到的坑多不勝數(shù)檐迟,出現(xiàn)的問(wèn)題已在文章中做了說(shuō)明
2补胚,配置環(huán)境比較繁瑣,若你是單人開(kāi)發(fā)在本機(jī)構(gòu)建追迟,可只安裝使用fastlane溶其,使用文章最后提供的腳本完成自動(dòng)打包上傳的功能
一,前置環(huán)境
1.1敦间,安裝ruby環(huán)境 如果你安裝過(guò)CocoPods瓶逃,可輸入
$ ruby -v (顯示版本大于2.0不用安裝)
出現(xiàn)報(bào)錯(cuò)信息或者版本小于2.0,請(qǐng)參考此鏈接安裝或更新每瞒,此處不做累述金闽。
1.2,安裝brew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝成功輸入剿骨,會(huì)跳轉(zhuǎn)到Homebrew官網(wǎng),即為成功
$ brew home
1.3埠褪,Jenkins依賴(lài)于Java環(huán)境浓利,首先需安裝和配置Java環(huán)境
$ brew cask install java
1.4, 詳細(xì)命令可使用 brew help 查看
二挤庇,安裝fastlane
Fastlane 是一個(gè) ruby 腳本集合成的套件, 包括了向 App Store 提交新應(yīng)用或更新已有應(yīng)用所需要的常用任務(wù)贷掖,相比自定義腳本嫡秕,穩(wěn)定性和功能會(huì)更多。
- gym 編譯打包生成 ipa 文件
- deliver 用于上傳應(yīng)用的二進(jìn)制代碼苹威,應(yīng)用截屏和元數(shù)據(jù)到 App Store
- sigh 可以生成并下載開(kāi)發(fā)者的 App Store 配置文件
- snapshot 可以自動(dòng)化iOS應(yīng)用在每個(gè)設(shè)備上的本地化截屏過(guò)程
2.1昆咽,依次執(zhí)行下列命令
$ xcode-select --install
已安裝出現(xiàn)錯(cuò)誤提示:
xcode-select: error: command line tools are already installed, use
"Software Update" to install updates ,可跳過(guò)這一步
未安裝牙甫,點(diǎn)擊安裝會(huì)出現(xiàn)彈框提示掷酗,點(diǎn)擊安裝
$ brew cask install fastlane (輸入密碼等待安裝成功)
安裝成功后提示: fastlane was successfully installed!
$ export PATH="$HOME/.fastlane/bin:$PATH" (安裝成功后執(zhí)行)
$ fastlane env (查看fastlane當(dāng)前環(huán)境,會(huì)提示你是否復(fù)制到剪切板窟哺,輸入n即可)
$ fastlane -version (輸出版本信息即為成功)
2.2泻轰,安裝蒲公英插件
$ fastlane add_plugin pgyer
2.3,在.xcodeproj項(xiàng)目目錄下且轨,初始化fastlane:
$ fastlane init
終端會(huì)提示要你填寫(xiě)你的開(kāi)發(fā)者賬號(hào)與密碼浮声,然后fastlane會(huì)自動(dòng)檢測(cè)當(dāng)前目錄下項(xiàng)目的App Name和App Identifier、Project旋奢。然后自行確認(rèn)并按流程執(zhí)行
2.4泳挥,若你的項(xiàng)目使用了Cocopods,在Gemfile文件中加入下面代碼:
gem "cocoapods"
三至朗,安裝Jenkins
Jenkins是用java編寫(xiě)的開(kāi)源持續(xù)集成工具屉符,可在此步步驟做代碼靜態(tài)檢查,語(yǔ)法檢查爽丹,腳本自動(dòng)化測(cè)試筑煮,根據(jù)測(cè)試結(jié)果發(fā)布最穩(wěn)定的版本等,大公司用的比較多粤蝎,功能很強(qiáng)大真仲,支持多樣化的插件機(jī)制,支持Git初澎,SVN秸应。
Jenkins的安裝方式
- pkg安裝,此方法會(huì)新建一個(gè)jenkins用戶(hù)后續(xù)會(huì)涉及了各種坑碑宴,不推薦
- brew安裝软啼,相對(duì)第一種比較好
- 最好的方案是使用tomcat+war部署Jenkins
3.1,點(diǎn)擊apache-tomcat-8.5.20下載文件延柠,并解壓重命名為T(mén)omcat祸挪,復(fù)制到資源庫(kù)目錄下
3.2,cd 到Tomcat文件的bin目錄下贞间,給sh文件賦予管理員權(quán)限贿条,按提示輸入密碼
$ sudo chmod 755 /Users/用戶(hù)名/Library/Tomcat/bin/*.sh
3.3雹仿, 然后執(zhí)行
$ sudo sh startup.sh
3.4,瀏覽器輸入 localhost:8080 打開(kāi)頁(yè)面如下整以,即安裝成功胧辽!
3.5,添加環(huán)境變量
因?yàn)閟tartup.sh與shutdown.sh需要在Tomcat的bin目錄下執(zhí)行公黑,每次輸入路徑比較麻煩邑商,設(shè)置以下環(huán)境變量即可
$ touch .bash_profile (創(chuàng)建bash_profile)
$ open -e .bash_profile(打開(kāi)bash_profile)
$ export PATH=$PATH:/Users/用戶(hù)名/Library/Tomcat/bin (在打開(kāi)的bash_profile中輸入)
$ source .bash_profile (更新配置的環(huán)境變量)
$ echo $PATH (驗(yàn)證是否成功)
3.5,配置JENKINS_HOME凡蚜,這一步很重要人断,如果不配置將會(huì)創(chuàng)建到私有目錄下,各種權(quán)限訪問(wèn)不到番刊!
在Tomcat的bin目錄下含鳞,編輯 catalina.sh 文件 找到如下代碼
# OS specific support. $var _must_ be set to either true or false.
在上面的代碼上面一行添加下面這句話,在引號(hào)中填入你的路徑芹务,
可在資源庫(kù)創(chuàng)建.jenkins文件夾用于存放蝉绷,如下圖所示
export JENKINS_HOME="Jenkins構(gòu)建的項(xiàng)目存放的路徑"
3.7,設(shè)置完畢上面的環(huán)境變量枣抱,可使用如下命令操作tomcat
$ sudo sh startup.sh (啟動(dòng)tomcat)
$ sudo sh shutdown.sh (關(guān)閉tomcat)
3.8熔吗,下載war,將war文件移動(dòng)到Tomcat文件夾的webapps目錄下
3.9佳晶,打開(kāi)鏈接 localhost:8080/jenkins/ 啟用Jenkins桅狠,等待大概兩分鐘左右就啟動(dòng)完成了
開(kāi)啟secrets目錄權(quán)限,
$ sudo chmod 755 /Users/用戶(hù)名/.jenkins/secrets
然后如下圖打開(kāi)initialAdminPassword轿秧,復(fù)制密碼粘貼到文本框中
3.10中跌,選擇左側(cè)的選項(xiàng),安裝jenkins推薦的插件就可以了
3.11菇篡,等待大概10分鐘左右就安裝完成了
3.12漩符,輸入對(duì)應(yīng)信息,防止忘記你可以使用你電腦的名稱(chēng)與密碼驱还,注意密碼忘記了你只能重裝Jenkins
3.13嗜暴,點(diǎn)擊開(kāi)始使用Jenkins按鈕
四,配置Jenkins
4.1议蟆,大功告成闷沥!點(diǎn)擊創(chuàng)建一個(gè)新任務(wù)
4.2,輸入項(xiàng)目名稱(chēng)咐容,選擇第一項(xiàng)構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目舆逃,點(diǎn)擊OK,有時(shí)候出現(xiàn)加載中的情況,多刷新幾次頁(yè)面即可
4.3颖侄,輸入描述信息鸟雏,項(xiàng)目構(gòu)建久了會(huì)有很多老舊的構(gòu)建不需要享郊,一個(gè)個(gè)刪除比較麻煩览祖,初始化項(xiàng)目可設(shè)置丟棄舊的構(gòu)建選項(xiàng),填寫(xiě)保持構(gòu)建的天數(shù)炊琉,保持構(gòu)建的最大個(gè)數(shù)展蒂,這里設(shè)置保持7天,最大構(gòu)建個(gè)數(shù)為30
4.4苔咪,點(diǎn)擊上方源碼管理菜單锰悼,選中Git選項(xiàng)
Repository URL:項(xiàng)目地址
Branch Specifier (blank for 'any') :分支,默認(rèn)為master团赏,這里設(shè)置的develoepr
4.5箕般,若你的Repository URL地址為SSH,你需要點(diǎn)擊Credentials 右側(cè) 的Add按鈕舔清,然后選中Jenkins選項(xiàng)配置SSH公鑰
Kind選項(xiàng)丝里,如下圖所示選擇SSH
4.6,選中 Private Key 的Enter directly 按鈕体谒,輸入用戶(hù)名與SHH公鑰杯聚,點(diǎn)擊Add
4.7,選中你所添加的用戶(hù)秘鑰抒痒,然后點(diǎn)擊最下方保存按鈕
4.6幌绍,添加shell腳本
選擇上面的構(gòu)建菜單,點(diǎn)擊底部增加構(gòu)建步驟故响,選擇第二項(xiàng) Execute shell
輸入如下腳本
#cd到項(xiàng)目fastlane文件夾所在根目錄傀广,一般為.xcodeproj所在目錄,這里是相對(duì)路徑
cd ./fastlane文件夾所在根目錄/
#打印當(dāng)前的路徑,驗(yàn)證是否正確
pwd
# 項(xiàng)目名稱(chēng)
IPANAME="項(xiàng)目名稱(chēng)"
echo "正在打包中..."
# 使用fastlane打包彩届,注意這里的scheme填入你項(xiàng)目對(duì)應(yīng)scheme即可
fastlane gym --scheme scheme --export_method ad-hoc --output_name ${IPANAME}
echo "上傳蒲公英..."
#注意:
#其中伪冰,USER_KEY 和 API_KEY 可以在蒲公英的「賬戶(hù)設(shè)置」中找到,之后進(jìn)行相應(yīng)替換惨缆。
#export_method 可以根據(jù)打包類(lèi)型進(jìn)行相應(yīng)設(shè)置糜值。
#可選的值有:app-store、ad-hoc坯墨、development寂汇、enterprise。
#對(duì)于 Xcode 8.3 以下的版本捣染,則不需要設(shè)置 export_method骄瓣。
curl -F "file=@${IPANAME}.ipa" -F "uKey=USER_KEY" -F "_api_key=API_KEY" https://qiniu-storage.pgyer.com/apiv1/app/upload
4.7,保存修改耍攘,回到主界面榕栏,點(diǎn)擊系統(tǒng)管理進(jìn)入系統(tǒng)設(shè)置
(全局設(shè)置&路徑)畔勤,勾選Environment variables, 終端輸入
$ echo $PATH
復(fù)制輸出的值,在鍵值對(duì)列表中扒磁,鍵填入PATH庆揪,值填入復(fù)制輸出的值
4.8,定時(shí)構(gòu)建
選擇上面的構(gòu)建觸發(fā)器菜單
Build periodically選項(xiàng):
定時(shí)觸發(fā)構(gòu)建妨托,輸入H */1 * * *
H */1 * * * (H */1 表示每小時(shí)任意分鐘執(zhí)行一次)
Poll SCM (poll source code management) 選項(xiàng)
輪詢(xún)?cè)创a管理,需要設(shè)置源碼的路徑才能起到輪詢(xún)的效果缸榛。一般設(shè)置為類(lèi)似結(jié)果: 0/5 每5分鐘輪詢(xún)一次
點(diǎn)擊保存,回到主界面點(diǎn)擊立即構(gòu)建兰伤,點(diǎn)擊#1可查看第一次構(gòu)建的信息
進(jìn)入點(diǎn)擊 左側(cè)Console Output 查看日志内颗,這里顯示打包上傳蒲公英成功!
4.9敦腔,自動(dòng)化構(gòu)建
4.9.1均澳,點(diǎn)擊最上方Jenkins頭像,回到主頁(yè)面符衔,點(diǎn)擊主頁(yè)面的系統(tǒng)配置按鈕
4.9.2找前,點(diǎn)擊第六項(xiàng),管理插件
4.9.3柏腻,選中可選插件選項(xiàng)纸厉,依次安裝插件
- Gitlab Hook Plugin
- GitLab Plugin
- Build Authorization Token Root Plugin
4.9.4,安裝到最后一項(xiàng)的時(shí)候五嫂,勾選安裝完成后重啟Jenkins颗品,重啟后需要重新登錄,可選中在這臺(tái)計(jì)算機(jī)上保持登錄狀態(tài)
4.9.5沃缘,重新進(jìn)入項(xiàng)目的配置頁(yè)面躯枢,選擇上面的構(gòu)建觸發(fā)器菜單
- 勾選Build when a change is pushed to GitLab. GitLab CI Service URL選項(xiàng)
- 勾選觸發(fā)遠(yuǎn)程構(gòu)建 (例如,使用腳本)選項(xiàng),在終端輸入如下命令槐臀,獲取Token令牌锄蹂,填入身份驗(yàn)證令牌文本框
$ openssl rand -hex 12
4.9.6,根據(jù)身份驗(yàn)證令牌下的提示水慨,拼接webHook URL
JENKINS_URL/job/tyfocgApp(iOS)/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME
例如如下鏈接得糜,中間不能有空格,如果是本機(jī)需要設(shè)置端口號(hào)
http://192.168.91.33:8080/buildByToken/build?job=tyfocgApp(iOS)&token=26acd09446289127aaa7f8d0
4.9.7晰洒,進(jìn)入GitLab對(duì)應(yīng)的項(xiàng)目朝抖,點(diǎn)擊左側(cè)菜單的Setting按鈕(此選項(xiàng)需要權(quán)限,沒(méi)有此選項(xiàng)找倉(cāng)庫(kù)管理員開(kāi)通)谍珊,選擇Web Hook 填入上方的地址治宣,點(diǎn)擊AddWebhook即可
什么是webhooks呢?
鉤子功能(callback),是幫助用戶(hù)push了代碼后侮邀,自動(dòng)回調(diào)一個(gè)您設(shè)定的http地址坏怪。 這是一個(gè)通用的解決方案,用戶(hù)可以自己根據(jù)不同的需求绊茧,來(lái)編寫(xiě)自己的腳本程序(比如發(fā)郵件铝宵,自動(dòng)部署等),例如你提交代碼到倉(cāng)庫(kù),釘釘上會(huì)有消息通知按傅,也是通過(guò)鉤子實(shí)現(xiàn)的捉超。
4.9.8,點(diǎn)擊下方的Test Hook按鈕測(cè)試此鏈接
鏈接有效
Hook successfully executed.
鏈接無(wú)效唯绍,請(qǐng)檢查Git服務(wù)器能否訪問(wèn)你的鏈接地址,如果是本地域名枝誊,請(qǐng)綁一下hosts况芒。需在同一網(wǎng)段,比如同是局域網(wǎng)環(huán)境叶撒,或同是外網(wǎng)環(huán)境
Hook execution failed. Ensure hook URL is correct and service is up.
此時(shí)需要再重啟一下GitLab服務(wù)器绝骚,此時(shí)可修改代碼,提交GitLab祠够,測(cè)試是否觸發(fā)構(gòu)建
如果點(diǎn)Test可以成功布署压汪,但提交git還是不會(huì)自動(dòng)布署,請(qǐng)執(zhí)行
$ /opt/codereview/phabricator/bin/phd start)
現(xiàn)在push代碼到develoer分支古瓤,你會(huì)發(fā)現(xiàn)Jenkins自動(dòng)執(zhí)行構(gòu)建任務(wù)止剖,checkout代碼, 觸發(fā)腳本打包上傳蒲公英落君,一分鐘后你將收到蒲公英的郵件短信通知??
五穿香,異常情況
-
4.1,輸入sudo sh startup.sh 命令出現(xiàn)錯(cuò)誤提示:
Cannot find ./catalina.sh The file is absent or does not have execute permission This file is needed to run this program 終端輸入如下命令绎速,前面設(shè)置過(guò)有時(shí)候還是報(bào)錯(cuò) $ cd /Users/用戶(hù)名/Library/Tomcat/bin/ $ chmod 777 *.sh
4.2皮获, 出現(xiàn) fastlane: command not found
這個(gè)情況一般是由于 jenkins 沒(méi)有設(shè)置正確的 $PATH 環(huán)境變量導(dǎo) 致的。正確設(shè)置的方法為:
$ echo $PATH
記錄上面命令輸出的結(jié)果在Jenkins 中系統(tǒng)管理-系統(tǒng)設(shè)置中纹冤,
找到 環(huán)境變量(Environment variables)洒宝,選中此項(xiàng)
在 key 中填寫(xiě) PATH,在 value 中填寫(xiě)第一步中輸出的結(jié)果
保存即可
-
4.3萌京, fastlane: command not found
命令行報(bào)錯(cuò) -bash: fastlane: command not found 終端輸入 $ echo $PATH 發(fā)現(xiàn)輸出內(nèi)容只有Tomcat的環(huán)境 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/rzj/Library/Tomcat/bin 這時(shí)候輸入任何的 fastlane 命令都會(huì)報(bào)錯(cuò) fastlane: command not found $ which fastlane $ whereis fastlane 以上兩個(gè)命令均沒(méi)有輸出信息 這是輸入 $ rvm -v 會(huì)發(fā)現(xiàn) 報(bào)錯(cuò) rvm: command not found
解決方法:
重新載入RVM環(huán)境即可雁歌,造成的原因可能為上面修改環(huán)境變量造成的覆蓋 $ source ~/.rvm/scripts/rvm
4.4,關(guān)閉防止跨站點(diǎn)請(qǐng)求偽造功能
該功能可能造成使用直接POST請(qǐng)求觸發(fā)自動(dòng)構(gòu)建報(bào)錯(cuò)403枫夺,在Jenkins系統(tǒng)管理中點(diǎn)擊Configure Global Security将宪,去掉勾選防止跨站點(diǎn)請(qǐng)求偽造功能即可
4.5,如果提示缺少 cloudbees-folder 的,可以前往這里下載其插件cloudbees-folder下載完成是一個(gè)hpi文件较坛,然后將該文件放到.jenkins的plugins里面即可印蔗,此情況一般不會(huì)遇到。
-
4.6丑勤,注意安裝 JRE 华嘹,這個(gè)需要注意版本,如果版本不符合要求法竞,會(huì)無(wú)法訪問(wèn) Jenkins耙厚,由于版本問(wèn)題導(dǎo)致的無(wú)法訪問(wèn)會(huì)在 tomcat/logs目錄下生成 log 文件, localhost.日期.log 岔霸,內(nèi)部有如下的錯(cuò)誤提示薛躬,如果你也遇到這個(gè)問(wèn)題,升級(jí) JRE 就好呆细,注意 升級(jí)JRE 需要重啟電腦型宝。
嚴(yán)重: Error configuring application listener of class jenkins.util.SystemProperties java.lang.UnsupportedClassVersionError: jenkins/util/SystemProperties : Unsupported major.minor version 51.0 (unable to load class jenkins.util.SystemProperties) .......
六,卸載Jenkins
5.1絮爷,通過(guò)安裝包安裝的卸載方式
cmd+shift+g 前往文件夾 輸入
/Library/Application\ Support/Jenkins/
點(diǎn)擊Uninstall.command
5.1趴酣,通過(guò)Homebrew安裝的卸載方式
$ brew uninstall jenkins
5.3 通過(guò)Tomcat+war安裝刪除Tomcat對(duì)應(yīng)的Jenkin文件夾即可
六,fastfile腳本
打開(kāi)項(xiàng)目fastlane目錄下的文件夾坑夯,將下列代碼替換到Fastfile文件中
#使用方法 cd到項(xiàng)目.xcworkspace目錄 終端輸入 fastlane automaticPackagingUpload
# 定義fastlane版本號(hào)
fastlane_version “2.55.0”
# 定義打包平臺(tái)
default_platform :ios
#指定項(xiàng)目的scheme名稱(chēng)
scheme = “ scheme”
#蒲公英api_key和user_key
api_key = “api_key”
user_key = “user_key”
def updateProjectBuildNumber
currentTime = Time.new.strftime("%Y%m%d")
build = get_build_number()
if build.include?"#{currentTime}."
# => 為當(dāng)天版本 計(jì)算迭代版本號(hào)
lastStr = build[build.length-2..build.length-1]
lastNum = lastStr.to_i
lastNum = lastNum + 1
lastStr = lastNum.to_s
if lastNum < 10
lastStr = lastStr.insert(0,"0")
end
build = "#{currentTime}.#{lastStr}"
else
# => 非當(dāng)天版本 build 號(hào)重置
build = "#{currentTime}.01"
end
puts("*************| 更新build #{build} |*************")
# => 更改項(xiàng)目 build 號(hào)
increment_build_number(
build_number: "#{build}"
)
end
# 任務(wù)腳本
platform :ios do
lane :automaticPackagingUpload do|options|
branch = options[:branch]
puts “*************| 開(kāi)始打包.ipa文件 |*************”
updateProjectBuildNumber #更改項(xiàng)目build號(hào)
# 開(kāi)始打包
gym(
#輸出的ipa名稱(chēng)
output_name:”#{scheme}_#{get_build_number()}”,
#指定項(xiàng)目的scheme
scheme:"#{scheme}",
# 是否清空以前的編譯信息 true:是
clean:true,
# 指定打包方式岖寞,Release 或者 Debug
configuration:"Release",
# 指定打包所使用的輸出方式,目前支持app-store, package, ad-hoc, enterprise, development
export_method:"ad-hoc",
# 指定輸出文件夾
output_directory:"~/Desktop/fastlaneBuild",
)
puts “*************| 開(kāi)始上傳蒲公英 |*************”
# 開(kāi)始上傳蒲公英
pgyer(api_key: “#{api_key}”, user_key: “#{user_key}”)
puts “*************| 上傳蒲公英成功柜蜈!|*************”
end
end
使用方法
1仗谆,cd到項(xiàng)目.xcworkspace目錄
$ fastlane automaticPackagingUpload
2,在桌面fastlaneBuild目錄下生成對(duì)應(yīng)的.iap文件
ipa 文件上傳到蒲公英后通知其他人
如果開(kāi)發(fā)者想讓 Jenkins 打包并上傳 ipa 文件到蒲公英后跨释,自動(dòng)通知其他人(常用于通知 App 相關(guān)的測(cè)試者)胸私,那么可以利用蒲公英的通知功能。蒲公英本身已經(jīng)支持了郵件通知鳖谈、短信通知岁疼、微信通知。具體設(shè)置方法可以點(diǎn)擊這里查看: 接收應(yīng)用更新通知
八缆娃,后序
把一件事寫(xiě)明白捷绒,煞費(fèi)苦心,如果你閱讀了本文章贯要,有什么問(wèn)題歡迎交流暖侨,簡(jiǎn)書(shū)會(huì)不定期更新,喜歡的可以點(diǎn)關(guān)注??
九崇渗,參考鏈接
使用 Fastlane 上傳 App 到蒲公英 (官方文檔)
Git鉤子:自定義你的工作流 (推薦閱讀)
OC靜態(tài)代碼檢查及持續(xù)集成(xcode analyzer+oclint+xcpretty)
自動(dòng)化工具Fastlane: 安裝, 打包,上傳(testFlight,app store)
iOS自動(dòng)化打包發(fā)布(Jenkins + Fastlane + GitLab + 蒲公英)
自動(dòng)化測(cè)試定時(shí)構(gòu)建---Jenkins時(shí)間輪詢(xún)配置
Jenkins 定時(shí)構(gòu)建
關(guān)于Mac上部署Jenkins的一些個(gè)人習(xí)慣
APP主題測(cè)試自動(dòng)化:Fastlane篇