Jenkins二:参数化构建iOS自动打包

前一篇:Jenkins一:iOS自动打包完整实践
后一篇:Jenkins三:不同角色不同视图及不同权限设置

前言

在之前文章Jenkins一:iOS自动打包完整实践中记录了使用Jenkins自动iOS打包的完整过程及遇到的问题,在实际项目中因为维护的iOS项目是一份代码管理了多个target和scheme,而前一篇文章是固定写死的针对某个分支或tag打指定scheme的包,不满足当前项目需求,所以需要用到参数化构建打包

参考文章:

  • MacOX+jenkins+svn搭建持续集成环境
  • Jenkins 传递自定义的参数,同一个job的不同shell间和多个job间传值
一、git分支或tag参数化构建

先按照插件Git Parameter


Jenkins二:参数化构建iOS自动打包_第1张图片
image.png

安装好插件后开始创建一个任务并配置git参数


Jenkins二:参数化构建iOS自动打包_第2张图片
image.png

配置使用Tag或Branch打包
Jenkins二:参数化构建iOS自动打包_第3张图片
image.png
二、多个scheme或target

先安装一个插件Extended Choice Parameter(非必须,也可以使用其他插件或者Jenkins默认安装的多选插件)

Jenkins二:参数化构建iOS自动打包_第4张图片
image.png

Jenkins二:参数化构建iOS自动打包_第5张图片
image.png

Jenkins二:参数化构建iOS自动打包_第6张图片
image.png

也可以使用Jenkins默认的插件选项参数


Jenkins二:参数化构建iOS自动打包_第7张图片
image.png

Jenkins二:参数化构建iOS自动打包_第8张图片
image.png

参数完成后的展示结果:


Jenkins二:参数化构建iOS自动打包_第9张图片
image.png

在自动打包的shell脚本里使用参数


Jenkins二:参数化构建iOS自动打包_第10张图片
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"

你可能感兴趣的:(Jenkins二:参数化构建iOS自动打包)