由于公司业务线多,打包需求越来越多,上线,提测,各种demo,不同环境配置的包。
最终基于fastlane 加 jenkins 实现了一套自动化打包系统。
jenkins做为壳子,去触发打包操作。
剩下的操作全部用脚本实现
配置一台电脑自动获取代码,并定时打包出以下版本的ipa文件。
内部测试版本:使用标准开发者的Developer证书签名的ipa文件。
公开测试版本:使用企业账户的Distribute InHouse证书签名的ipa文件。
AppStore版本:使用标准开发者的AppStore证书签名的ipa文件。
保留每个版本的dSYM调试符号文件。
首先建立不同的配置文件plist
为了满足可以同时打包
先copy一份 仓库代码和脚本代码 到配置文件目录下 再执行脚本
然后根据配置文件的分支 拉取最新代码
接下来
执行fastlane语句 进行打包前的配置。
这里有个fastfile配置文件。使用ruby语言写的
目前配置了
// app名字
set_info_plist_value(
"#$plistFilePath",
"CFBundleDisplayName",
"#{options[:name]}"
)
//bundleid
update_app_identifier(
xcodeproj: "#$projectFilePath" ,
plist_path: "#$plistFilePath",
app_identifier: "#{options[:bundleIdentity]}"
)
// 描述文件证书
update_project_team(
path: "#$projectFilePath" ,
teamid: "#{options[:teamID]}"
)
update_project_provisioning(
xcodeproj: "#$projectFilePath",
profile: "#{provisioningProfilePath}", # optional if you use sigh
target_filter: ".*#$schemeName.*",
build_configuration: "Release"
)
cer证书
// buildNumber version版本号
set_info_plist_value(
"#$plistFilePath",
"CFBundleShortVersionString",
options[:version]
)
set_info_plist_value(
"#$plistFilePath",
"CFBundleVersion",
options[:build]
)
# 设置工程的 Automatic Managing signing 配置为 NO
codeSigningStatus = disable_automatic_code_signing(
path: "#$projectFilePath",
use_automatic_signing: false,
targets: ["#$schemeName","#$appexTargetName"]
)
// 然后执行 gym开始打包
gym(
scheme: "#$schemeName",
workspace: "#$workspaceFilePath",
silent: true,
clean: true,
buildlog_path: "#{shellPath}/buildTemp",
// //ipa包输出目录
output_directory: "#{shellPath}/buildTemp",
build_path: "#{shellPath}/buildTemp",
output_name: "#{outputName}.ipa",
configuration: "Release",
export_method: "#{exportMethod}",
codesigning_identity: "#{codesigningIdentity}",
export_team_id: "#{teamId}"
# sdk: "iphoneos10.3"
)
执行gym打包时需要配置
符号表输出目录
打包结束后。进行 上传操作
并发邮件或通知钉钉
上传符号表,最终结束
fastfile 文件 语法点击这里
https://docs.fastlane.tools/advanced/Fastfile/
关于 脚本执行上传操作
app group插件 的打包配置。
jenkins各种问题总结 后期更新