macOS Jenkins 教程二:iOS 参数化构建,配合fastlane-shell脚本打包

Jenkins参数化构建:

背景

参数化构建即通过 Git Parameter 插件在打包前进行参数设置,以便更灵活的进行多方位的构建

8C6982E50EC32AB6BA285E072B013F98.jpg

一:git Param

471D74AD5E57F8FD67D252090FA6828A.jpg

这个为git分支的参数化构建,

  • NameBRANCH 可以理解为这个参数化构建的宏定义
  • Parameter Type:该字段为选择的打包分支为 tag 还是 branch,或者两者皆是。(当 App 发布版本比较多时,Tag 会比较冗长,一般会选择 Branch。针对历史版本可以单独设置一个项目来打包)
  • Branch Filter:分支过滤器,.* 默认不过滤,此处支持正则表达式,建议项目分支使用 git-flow 规范,这样做精确的匹配就更方便
    • 当只需要展示 release 的分支时,可以设置为 origin/release.*
    • 有时候发布分支为 release 或者 hotfix,需要同时支持,此处正则匹配可设置为:origin/((release)|(hotfix)).* (默认正则不需要小括号,这里必须加小括号才行)
  • Sort Model:排序方式
  • Selected Value:默认选中哪个值
  • Quick Filter:快速搜索分支,当分支过多时,建议添加。可以提高打包的效率

当项目设置分支的时候,可以使用 ${} 的方式来获取

3F0D04743610F282D394692D30CCA681.jpg

我们保存下设置,开始构建项目

C7A15A035B7F6B94D91B57F17C57C6E9.jpg

二:Choice Parameter

定义一个简单的字符串参数,可以从列表中选择该参数。可以在构建过程作为环境变量

1BB85900E35EEE931E81DCB83F28D2C0.jpg

我们可以把项目的 CONFIGURATION 设置为参数,也可以把证书的导出方式作为参数(development,adhoc 等)作为参数,可以通过不同的配置,进行各个角度的打包,满足绝大多数打包需求

三:File Parameter

9DB34CD9B5648B46241A3FCF69D9BC39.jpg

可以通过文件参数化,用来替换项目中的指定文件。如用 plist 文件来进行替换项目的 plist 文件,从而达到更改 plist 文件默认配置的目的

四:其他

566F5F652FEF8F7B269307EA9C704DAB.jpg

用法基本与上面类似,都是定义宏,引用 ${宏},只是参数类型不同,看自己需要的场景了。

与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==="
---------------------

这个是项目的参数化配置

4ADDB1AE2226A3061E9A4B87DDE6EA35.jpg

具体使用处为:

88219D3F3CD7344FE06D1D59D9F8FABF.jpg

你可能感兴趣的:(macOS Jenkins 教程二:iOS 参数化构建,配合fastlane-shell脚本打包)