前一篇:Jenkins一:iOS自动打包完整实践
后一篇:Jenkins三:不同角色不同视图及不同权限设置
前言
在之前文章Jenkins一:iOS自动打包完整实践中记录了使用Jenkins自动iOS打包的完整过程及遇到的问题,在实际项目中因为维护的iOS项目是一份代码管理了多个target和scheme,而前一篇文章是固定写死的针对某个分支或tag打指定scheme的包,不满足当前项目需求,所以需要用到参数化构建打包
参考文章:
一、git分支或tag参数化构建
先按照插件Git Parameter
安装好插件后开始创建一个任务并配置git参数
配置使用Tag或Branch打包
二、多个scheme或target
先安装一个插件Extended Choice Parameter(非必须,也可以使用其他插件或者Jenkins默认安装的多选插件)
也可以使用Jenkins默认的插件选项参数
参数完成后的展示结果:
在自动打包的shell脚本里使用参数
完整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"