前言
年后有感于為業(yè)務(wù)和測(cè)試部門頻繁的打包嫉晶,太過(guò)于影響開發(fā)骑疆,就嘗試搭建了一個(gè)自動(dòng)化打包的平臺(tái),把自己從繁瑣的打包中解救出來(lái)替废。
本文主要用了fastlane和jenkins上傳到蒲公英箍铭,需要發(fā)布到App Store可以去參考一下其他文章。
fastlane安裝
在搭建的過(guò)程中我主要參考了iOS自動(dòng)化打包發(fā)布(Jenkins + Fastlane + GitLab + 蒲公英) - 簡(jiǎn)書椎镣,其中fastlane的安裝在這篇文章寫的簡(jiǎn)單明了诈火,在這里我就不做過(guò)多的贅述了。
蒲公英的fastlane配置的安裝状答,和fastlane的配置也可以參考以上文章冷守,我主要說(shuō)一下我在配置fastlane腳本時(shí)遇到的一些坑。
1.打開終端惊科,cd你工程的根目錄拍摇,并執(zhí)行以下命令:
fastlane init
中間會(huì)讓你輸入蘋果開發(fā)者賬號(hào)的賬號(hào)和密碼,之后會(huì)在你項(xiàng)目工程的目錄下生成一個(gè)fastlane文件夾馆截,里面有Fastlane的配置文件充活,一個(gè)是Appfile文件蜂莉,一個(gè)是Fastfile文件(如果要上傳AppStore的話還有Deliverfile文件)。Appfile保存蘋果開發(fā)者的相關(guān)信息混卵、項(xiàng)目的相關(guān)信息等映穗。Fastfile是運(yùn)行腳本。
在寫FastFile文件時(shí)幕随,我遇到一坑蚁滋,因?yàn)槲覀冺?xiàng)目比較老,在打包的時(shí)候的時(shí)候出現(xiàn)了5個(gè)選項(xiàng)赘淮,我的gym如下:
然后使用fastlane打包出現(xiàn)下面的情況:
一下子出現(xiàn)了5個(gè)scheme枢赔,然后要手動(dòng)輸入數(shù)字才能夠繼續(xù)進(jìn)行打包,然后我查資料拥知,參考了這個(gè)Fastlane的gym指令 - CSDN博客踏拜,在gym里加入scheme參數(shù)解決了這個(gè)問(wèn)題,參數(shù)的值要寫scheme全拼低剔,不要寫數(shù)字速梗。
最后的gym如圖所示:
jenkins安裝
jenkins安裝我主要參考了蒲公英的開發(fā)文檔,蒲公英 - 文檔中心 - 使用 Jenkins 實(shí)現(xiàn)持續(xù)集成 (iOS)襟齿。
在 Mac 環(huán)境下姻锁,我們需要先安裝 JDK,然后在Jenkins 的官網(wǎng)下載最新的 war 包猜欺。下載完成后位隶,打開終端,進(jìn)入到 war 包所在目錄开皿,執(zhí)行以下命令:
java -jar jenkins.war --httpPort=8080
記住一定要用war包涧黄,我一開始去官網(wǎng)下載了jenkins的pkg包,安裝后一直出錯(cuò)赋荆,最后換成war包之后才好笋妥。
jenkins的配置
最基本的配置我就不再贅述了,請(qǐng)參考蒲公英 - 文檔中心 - 使用 Jenkins 實(shí)現(xiàn)持續(xù)集成 (iOS)窄潭,在這我主要說(shuō)一下jenkins本身一些有意思的功能和腳本的配置春宣。
jenkins在build的時(shí)候可以添加一些參數(shù),我根據(jù)我們的需求在jenkins上添加了兩個(gè)參數(shù)嫉你,如圖所示:
第一個(gè)參數(shù)的作用是打包的時(shí)候能夠輸入一些日志月帝,便于進(jìn)行版本管理,第二個(gè)參數(shù)則是選擇打測(cè)試包還是生產(chǎn)包幽污,根據(jù)這個(gè)參數(shù)的值我們進(jìn)行文件的替換嚷辅。加入?yún)?shù)后build時(shí)的效果如圖:
jenkins腳本設(shè)置
這一步主要用來(lái)打包 ipa 并上傳到蒲公英。我們點(diǎn)擊“增加構(gòu)建步驟”油挥,選擇 "Execute Shell"潦蝇。輸入你的腳本款熬,我們能在這一步做很多事深寥。
#取到我們?cè)O(shè)置的參數(shù)攘乒,判斷是打生產(chǎn)還是測(cè)試包
if [ $BUILD_TYPE == "Release" ];
then
#我在svn上放的是測(cè)試環(huán)境的url文件,打生產(chǎn)包的時(shí)候把我放在根目錄的生產(chǎn)環(huán)境的URL文件和里面的進(jìn)行替換
cp -rp $WORKSPACE/UrlHeader.h $WORKSPACE/yingxiao/Third
fi
IPANAME="jinkens-myapp"
#fastlane的參數(shù)配置
fastlane gym --export_method enterprise --output_name ${IPANAME} --clean true --configuration Release
#創(chuàng)建json日志文件惋鹅,用于存儲(chǔ)蒲公英給我們返回的信息
postfiledir=${WORKSPACE}/tmp
postfilename=$postfiledir/upload_app.txt
if [ ! -e "$postfiledir" ]; then
mkdir $postfiledir
echo "創(chuàng)建了日志文件夾"
fi
if [ ! -e "$postfilename" ]; then
touch $postfilename
echo "創(chuàng)建了日志文件"
fi
#上傳到蒲公英并接收蒲公英返回的信息则酝,并在jenkins的build History上展示返回的二維碼圖片
curl -F "file=@${IPANAME}.ipa" -F "uKey=" -F "_api_key=" http://www.pgyer.com/apiv1/app/upload >${postfilename}
url=$(cat ${postfilename}|awk -F'"' '{print $(NF-1)}'|sed 's#\\##g')
echo "appQRCodeURL:<img src=$url>"
#經(jīng)測(cè)試,生產(chǎn)環(huán)境的url文件把測(cè)試的url文件替換后闰集,再打測(cè)試包發(fā)現(xiàn)jenkins沒(méi)把svn上的測(cè)試環(huán)境url文件拉下來(lái)沽讹,所以結(jié)束的時(shí)候刪除工作空間
rm -rf $WORKSPACE
執(zhí)行完畢成功的結(jié)果是: