前一篇:Jenkins一:iOS自動打包完整實踐
后一篇:Jenkins三:不同角色不同視圖及不同權限設置
前言
在之前文章Jenkins一:iOS自動打包完整實踐中記錄了使用Jenkins自動iOS打包的完整過程及遇到的問題,在實際項目中因為維護的iOS項目是一份代碼管理了多個target和scheme,而前一篇文章是固定寫死的針對某個分支或tag打指定scheme的包,不滿足當前項目需求,所以需要用到參數化構建打包
參考文章:
一、git分支或tag參數化構建
先按照插件Git Parameter
image.png
安裝好插件后開始創建一個任務并配置git參數
image.png
配置使用Tag或Branch打包
image.png
二、多個scheme或target
先安裝一個插件Extended Choice Parameter(非必須,也可以使用其他插件或者Jenkins默認安裝的多選插件)
image.png
image.png
image.png
也可以使用Jenkins默認的插件選項參數
image.png
image.png
參數完成后的展示結果:
image.png
在自動打包的shell腳本里使用參數
image.png
完整shell腳本
# 工程名
APP_NAME="xxxx"
#***************動態配置部分*********************
# 不勾上自動管理證書
CODE_SIGN_DISTRIBUTION="iPhone Distribution: xxxxx"
# 代碼文件夾名稱
#scheme#Info文件名稱
platformParams=(${iOS_TARGET_INFOS//\#/ })
# schema名稱
SCHEMECA=${platformParams[0]}
#info.plist文件名稱
INFO_FILENAME=${platformParams[1]}
code_folder = "TestStudy"
#*************************************
project_infoplist_path="./${code_folder}/xxxxx/${INFO_FILENAME}.plist"
#取版本號
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
DATE="$(date +%Y%m%d-%H%M%S)"
IPANAME="${APP_NAME}_${SCHEMECA}_V${bundleShortVersion}_${DATE}.ipa"
#要上傳的ipa文件路徑
IPA_PATH="/Users/Shared/Jenkins/Home/xxxxxxx/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt
#下面2行是沒有Cocopods的用法
#echo "=================clean================="
#xcodebuild -target "${TARGET_NAME}" -configuration 'Release' clean
#
#echo "+++++++++++++++++build+++++++++++++++++"
#xcodebuild -target "${TARGET_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
#下面2行是集成有Cocopods的用法
echo "=================clean================="
security unlock-keychain -p 開機密碼 /Users/Shared/Jenkins/Library/Keychains/login.keychain
xcodebuild -workspace "./${code_folder}/${APP_NAME}.xcworkspace" -scheme ${SCHEMECA} -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -workspace "./${code_folder}/${APP_NAME}.xcworkspace" -scheme ${SCHEMECA} -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${SCHEMECA}.app" -o ${IPA_PATH}
#自動打包后上傳到SVN上
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
cd /Users/Shared/Jenkins/Home/xxxxx/
svn up
svn add . --no-ignore --force
svn ci -m "jenkins ios auto commit"