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

时间:2016-05-11 10:58:27

标签: ios fastlane fastlane-deliver

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

Fastlane docs suggest使用.env文件来处理多个目标(您可以在不同的.env文件中指定app_identifierteam_name等,然后,例如,致电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上传二进制文件),我希望有更好的方法。有吗?

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

3 个答案:

答案 0 :(得分:8)

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

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

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

fastlane deliver download_metadata -m "./Targets/Release/Metadata" -u "itunes@username" -a "com.example.ios"

截图:

fastlane deliver download_screenshots -w "./Targets/Release/Screenshots" -u "itunes@username" -a "com.example.ios"

答案 1 :(得分:5)

加起来@rckoenes回答:

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

DLV_METADATA_PATH="../Targets/Your_Target/Metadata"
DLV_ITUNESCONNECT_USERNAME="yourItunesUser@something.com"
DLV_BUNDLE_ID="com.yourCompany.yourTarget"

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

3)像这样打电话给fastlane:

fastlane metadata --env yourEnvName

这样它有点干净,你把变量保存在.env文件中。 要自动执行多个目标的此调用,请参阅:https://docs.fastlane.tools/faqs/#multiple-targets-of-the-same-underlying-app

答案 2 :(得分:2)

这是@rckoenes,@ Riddick的答案和fastlane github issue submission的组合。

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

ENV["DELIVER_FORCE_OVERWRITE"] = "1"

将它添加到了车道并且工作了!

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

METADATA_PATH="../Targets/Your_Target/Metadata"
APP_IDENTIFIER="com.yourCompany.yourTarget"

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

3)像这样打电话给fastlane:

fastlane metadata --env yourEnvName

***我没有使用username参数,因为我在我的Deliver文件中使用了它。