如何为多个目标提供(fastlane)下载元数据?

Fre*_*ame 9 ios fastlane fastlane-deliver

我有一个包含六个目标的Xcode项目,每个目标都是为了构建一个单独的应用程序.我正在尝试设置fastlane来帮助我发布这些应用程序.

FASTLANE文档建议,以便处理多个目标使用.ENV文件(可以指定app_identifier,team_name等不同.ENV文件,然后,例如,电话fastlane appstore --env ENV_NAME_HERE).但是我无法弄清楚如何deliver正确设置.

deliver init仅默认情况下下载一个目标的元数据.我需要将所有目标的元数据下载到不同的目录(然后使用这些目录来上传数据). deliver download_metadata不接受--env参数(我的Deliverfile依赖于env文件).我试过了fastlane deliver --env,但它似乎只是一个简写deliver,所以它也不起作用.

我想我可以手动运行deliver不同的--metadata_path参数(以及所有其他参数,因为我的Deliverfile无效,因为它依赖于env文件),然后使用Deliverfile + .env文件指定目录.但由于我已经设置了Deliverfile和.env文件(现在我只使用deliver上传二进制文件),我希望有更好的方法.在那儿?

PS这是一个很大的遗留项目,所以将它分成六个不同的项目会很棒,但不幸的是它不是一个选择.

rck*_*nes 11

我一直在努力解决这个问题,使用.env文件设置提交很容易.

但是检索初始数据很困难,但并非不可能.

要获取元数据,它运行此命令:

fastlane deliver download_metadata -m "./Targets/Release/Metadata" -u "itunes@username" -a "com.example.ios"
Run Code Online (Sandbox Code Playgroud)

并为截图:

fastlane deliver download_screenshots -w "./Targets/Release/Screenshots" -u "itunes@username" -a "com.example.ios"
Run Code Online (Sandbox Code Playgroud)


r_1*_*_19 7

这是@rckoenes、@Riddick 的回答和这个fastlane github 问题提交的组合

我正在尝试使用@Riddick 的答案来简化工作流程,但无法下载元数据。出于某种原因,它只制作元数据路径文件夹,但没有从 iTunesConnect 下载元数据。我做了一些试验和错误,从上面的链接中找到了这行代码:

ENV["DELIVER_FORCE_OVERWRITE"] = "1"

将它添加到车道并工作!

1)使用此信息创建一个 .env.yourEnvName 文件(作为示例):

METADATA_PATH="../Targets/Your_Target/Metadata"
APP_IDENTIFIER="com.yourCompany.yourTarget"
Run Code Online (Sandbox Code Playgroud)

2)创建一个这样的车道:

desc "Download metadata"
 lane :metadata do
    ENV["DELIVER_FORCE_OVERWRITE"] = "1" # This is the additional line from Riddick's code
    sh "fastlane deliver download_metadata --app_identifier #{ENV['APP_IDENTIFIER'] --metadata_path #{ENV['METADATA_PATH']}"
 end
Run Code Online (Sandbox Code Playgroud)

3)像这样调用fastlane:

fastlane metadata --env yourEnvName
Run Code Online (Sandbox Code Playgroud)

***我没有使用用户名参数,因为我的交付文件中有它。


小智 6

加起来为@rckoenes答案:

1)使用此信息创建一个.env.yourEnvName文件(例如):

DLV_METADATA_PATH="../Targets/Your_Target/Metadata"
DLV_ITUNESCONNECT_USERNAME="yourItunesUser@something.com"
DLV_BUNDLE_ID="com.yourCompany.yourTarget"
Run Code Online (Sandbox Code Playgroud)

2)创建一个这样的车道:

desc "Download metadata"
 lane :metadata do
    sh('fastlane deliver download_metadata -m "$DLV_METADATA_PATH" -u $DLV_ITUNESCONNECT_USERNAME -a $DLV_BUNDLE_ID')
 end
Run Code Online (Sandbox Code Playgroud)

3)像这样调用fastlane:

fastlane metadata --env yourEnvName
Run Code Online (Sandbox Code Playgroud)

这样,它会更干净一些,并将vars保留在.env文件中。要自动执行针对多个目标的调用,请参阅:https : //docs.fastlane.tools/faqs/#multiple-targets-of-the-same-underlying-app