Jenkins参数化构建:
参数化构建即通过 Git Parameter 插件在打包前进行参数设置,以便更灵活的进行多方位的构建
一:git Param
这个为git分支的参数化构建,
-
Name:BRANCH 可以理解为这个参数化构建的宏定义
-
Parameter Type:该字段为选择的打包分支为 tag 还是 branch,或者两者皆是。(当 App 发布版本比较多时,Tag 会比较冗长,一般会选择 Branch。针对历史版本可以单独设置一个项目来打包)
-
Branch Filter:分支过滤器,.* 默认不过滤,此处支持正则表达式,建议项目分支使用 git-flow 规范,这样做精确的匹配就更方便
- 当只需要展示 release 的分支时,可以设置为
origin/release.* - 有时候发布分支为 release 或者 hotfix,需要同时支持,此处正则匹配可设置为:
origin/((release)|(hotfix)).*(默认正则不需要小括号,这里必须加小括号才行)
- 当只需要展示 release 的分支时,可以设置为
-
Sort Model:排序方式
-
Selected Value:默认选中哪个值
-
Quick Filter:快速搜索分支,当分支过多时,建议添加。可以提高打包的效率
当项目设置分支的时候,可以使用 ${} 的方式来获取
我们保存下设置,开始构建项目
二:Choice Parameter
定义一个简单的字符串参数,可以从列表中选择该参数。可以在构建过程作为环境变量
我们可以把项目的
CONFIGURATION 设置为参数,也可以把证书的导出方式作为参数(development,adhoc 等)作为参数,可以通过不同的配置,进行各个角度的打包,满足绝大多数打包需求
三:File Parameter
可以通过文件参数化,用来替换项目中的指定文件。如用 plist 文件来进行替换项目的 plist 文件,从而达到更改 plist 文件默认配置的目的。
四:其他
用法基本与上面类似,都是定义宏,引用 ${宏},只是参数类型不同,看自己需要的场景了。
与shell脚本配合,完成自动化构建
背景:此文件旨在提供一种除直接在 fastfile 中编辑 lane 命令之外的另一种实现方式
使用方式:直接把该文件拖拽到命令行即可
类型:可以添加多种类似的脚本,比如 development的,adhoc的,App Store 的。通过执行不同的 shell 文件同样可达到目的
#!/bin/bash
#设置超时
export FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT=120
#计时
SECONDS=0
#pwd显示当前工作目录
#project_path=$(pwd)
#获取当前shell所在的文件夹路径
shell_path=$(cd $(dirname $0); pwd)
#获取文件夹所在的路径(相当于他的上一级路径)这种方式可以无限上级获取哦
#获取项目文件夹
project_path=$(dirname "$shell_path")
#取当前时间字符串添加到文件结尾
now=$(date +"%Y_%m_%d_%H_%M_%S")
#指定项目的scheme名称
scheme="Micropulse"
#指定要打包的配置名
configuration=$1
if [ -z "$configuration" ]; then
echo "configuration is empty"
configuration="Debug"
fi
#指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method参数
export_method=$2
if [ -z "$export_method" ]; then
echo "export_method is empty"
export_method="development"
fi
#指定项目地址
workspace_path="$project_path/${scheme}.xcworkspace"
#指定输出路径
output_path="$project_path/fast_ignore"
#指定输出归档文件地址
archive_path="$output_path/archive/${scheme}_${now}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/app/${scheme}_${now}.ipa"
#指定输出ipa名称
ipa_name="${scheme}_${now}.ipa"
#获取执行命令时的commit message
#commit_msg="$1"
#输出设定的变量值
echo "===configuration: ${configuration}==="
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="
#先清空前一次build
fastlane gym --workspace ${workspace_path} --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name}
#上传到fir
#fir publish ${ipa_path} -T "5dd722b208b7b378bcd9ba3d1f8609ff" -c "${commit_msg}"
#输出总用时
echo "===Finished. Total time: ${SECONDS}s==="
---------------------
这个是项目的参数化配置
具体使用处为: