開(kāi)篇:前幾天個(gè)人業(yè)務(wù)空檔期,想著把自動(dòng)打包部署一下,不影響我們開(kāi)發(fā)時(shí)間。首選就想到了Jenkins,想必有很多朋友都自己部署過(guò)。
在初期我使用純Jenkins去部署,確實(shí)遇到了各種各樣的問(wèn)題。
之后多謝明中的幫助,所以之后選擇了Tomcat,最終也部署成功了。
自動(dòng)打包原理其實(shí)是在Jenkins的子目錄下,拷貝一份我們的項(xiàng)目過(guò)去,通過(guò)打包指令,對(duì)拷貝的項(xiàng)目進(jìn)行打包,如果需要上傳至蒲公英,只需要加上幾句指令就行。如果是需要上傳至公司內(nèi)網(wǎng)服務(wù)器或者共享地址,也只需要加上對(duì)應(yīng)的指令。
前提準(zhǔn)備:Java 環(huán)境
下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
注:如果已經(jīng)安裝過(guò)java,此步驟可略過(guò)
一、Tomcat
1.為何選擇Tomcat
在之前使用純Jenkins去部署,遇到了權(quán)限問(wèn)題和路徑問(wèn)題,差點(diǎn)沒(méi)把自己搞暈了。
使用Tomcat優(yōu)點(diǎn):
1.不用管權(quán)限問(wèn)題。
2.不用在Jenkins里設(shè)置上傳各種證書(shū):.keychain和.mobileprovision。
3.目錄結(jié)構(gòu)清晰,目錄結(jié)構(gòu)完全可配。
2.Tomcat安裝與設(shè)置
下載地址:http://tomcat.apache.org/
下載完成后 ,解壓,然后放到任意目錄,這里我放入了 /Users/YourName/Library
1.修改文件夾權(quán)限:
sudo chmod -R 777 /Library/Tomcat
2.啟動(dòng)Tomcat:

二、Jenkins
1.安裝
下載Jenkins.war:http://mirrors.jenkins.io/war-stable/latest/jenkins.war
下載完成后,將jenkins.war包保存到Tomcat\webapps下
2.配置Jenkins工作路徑:
在/Library/Tomcat/bin下打到catalina.sh文件,添加下面這行
export JENKINS_HOME="/Users/xxxx/Jenkins"
3.重啟Tomcat:
//關(guān)閉
/Library/Tomcat/bin/shutdown.sh
//啟動(dòng)
/Library/Tomcat/bin/startup.sh

在瀏覽器中輸入:http://localhost:8825/jenkins,順利打開(kāi)Jenkins!
三、配置Jenkins腳本
jenkins的解鎖等前期步驟,直接跳過(guò),直接到最重要的部分,腳本配置。
1.配置參數(shù)


2.svn配置

3.shell腳本
Date="$(date +"%m%d_%H%M")"
Day="$(date +"%m%d")"
workspace_path=$WORKSPACE
archive_path=$JENKINS_HOME/workspace/Packages/項(xiàng)目名
cd $workspace_path
pod install
cd 項(xiàng)目名.xcodeproj
# 我的項(xiàng)目中有配置bugly的腳本,打包時(shí)會(huì)上傳DSYM,影響打包速度。
# 打包給測(cè)試使用時(shí),用不到,所以使用perl正則找到配置bugly的腳本,替換為空字符串。
cat project.pbxproj | perl -pe "s/(?<=shellScript = \").*UPLOAD_DSYM_ONLY=1.*(?=(\"))//" > 999.pbxproj
mv -f 999.pbxproj project.pbxproj
xcodebuild archive \
-workspace "$workspace_path/項(xiàng)目名.xcworkspace" \
-scheme $Scheme \
-configuration $Configuration \
-archivePath $archive_path/項(xiàng)目名.xcarchive
xcodebuild \
-exportArchive \
-archivePath $archive_path/項(xiàng)目名.xcarchive \
-exportPath $archive_path \
-exportOptionsPlist $WORKSPACE/${ExportType}_ExportOptions.plist
#刪除舊xcarchive
rm -rf archive_path/項(xiàng)目名.xcarchive
#改名
IpaName="${Scheme}_${Configuration}_${Date}.ipa"
mv $archive_path/項(xiàng)目名.ipa $archive_path/$IpaName
if [ $UP_PGY == true ]
then
IPA="$archive_path/$IpaName"
PGYUSERKEY="user_key"
PGYAPIKEY="api_key"
PGYDESC="Jenkins自動(dòng)打包"
#自動(dòng)上傳到蒲公英
curl -F "file=@$IPA" \
-F "uKey=$PGYUSERKEY" \
-F "_api_key=$PGYAPIKEY" \
-F "updateDescription=$PGYDESC" \
"https://qiniu-storage.pgyer.com/apiv1/app/upload"
fi
??!在打包過(guò)程中如果出現(xiàn)問(wèn)題,可能是路徑問(wèn)題。所以路徑要仔細(xì)檢查,要知道哪個(gè)路徑代表什么意思,存放著什么東西。
最終實(shí)現(xiàn):可以一鍵打包測(cè)試環(huán)境debug、預(yù)發(fā)布release-pre、線上release三個(gè)環(huán)境。


參考資料:
Jenkins環(huán)境搭建 iOS
如何為你的App配置多環(huán)境變量
手把手教你給一個(gè)iOS app配置多個(gè)環(huán)境變量