如何为多个目标提供(快速通道)下载元数据?
How to make deliver (fastlane) download metadata for multiple targets?
我有一个包含六个目标的 Xcode 项目,每个目标都用于构建一个单独的应用程序。我正在尝试设置 fastlane 以帮助我发布这些应用程序。
Fastlane 文档 suggest 使用 .env 文件来处理多个目标(您可以在不同的 .env 文件中指定 app_identifier
、team_name
等,然后,对于例如,调用 fastlane appstore --env ENV_NAME_HERE
)。但是我不知道如何正确设置 deliver
。
deliver init
默认只下载一个目标的元数据。我需要将所有目标的元数据下载到不同的目录(显然,然后使用这些目录上传数据)。
deliver download_metadata
不接受 --env
参数(我的 Deliverfile 依赖于 env 文件)。我已经试过了 fastlane deliver --env
,但它似乎只是 shorthand for deliver
,所以它也不起作用。
我想我可以手动 运行 deliver
使用不同的 --metadata_path
参数(以及所有其他参数,因为我的 Deliverfile 无效,因为它取决于 env 文件),并且然后稍后使用 Deliverfile + .env 文件指定目录。但由于我已经设置了 Deliverfile 和 .env 文件(现在我使用 deliver
仅上传二进制文件),我希望有更好的方法。有吗?
P.S。这是一个大型遗留项目,因此将它分成六个不同的项目会很好,但不幸的是,这不是一个选择。
我也一直在努力解决这个问题,使用 .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"
总计 @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
这是@rckoenes、@Riddick 的回答和这个 fastlane github issue submission 的组合。
我正在尝试@Riddick 的回答以获得更清晰的工作流程,但我无法下载元数据。出于某种原因,它只生成元数据路径文件夹,但没有从 iTunesConnect 下载的元数据。我做了一些试验和错误,并从上面的 link 中找到了这行代码:
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
***我没有使用用户名参数,因为我在我的传送文件中有它。
我有一个包含六个目标的 Xcode 项目,每个目标都用于构建一个单独的应用程序。我正在尝试设置 fastlane 以帮助我发布这些应用程序。
Fastlane 文档 suggest 使用 .env 文件来处理多个目标(您可以在不同的 .env 文件中指定 app_identifier
、team_name
等,然后,对于例如,调用 fastlane appstore --env ENV_NAME_HERE
)。但是我不知道如何正确设置 deliver
。
deliver init
默认只下载一个目标的元数据。我需要将所有目标的元数据下载到不同的目录(显然,然后使用这些目录上传数据)。
deliver download_metadata
不接受 --env
参数(我的 Deliverfile 依赖于 env 文件)。我已经试过了 fastlane deliver --env
,但它似乎只是 shorthand for deliver
,所以它也不起作用。
我想我可以手动 运行 deliver
使用不同的 --metadata_path
参数(以及所有其他参数,因为我的 Deliverfile 无效,因为它取决于 env 文件),并且然后稍后使用 Deliverfile + .env 文件指定目录。但由于我已经设置了 Deliverfile 和 .env 文件(现在我使用 deliver
仅上传二进制文件),我希望有更好的方法。有吗?
P.S。这是一个大型遗留项目,因此将它分成六个不同的项目会很好,但不幸的是,这不是一个选择。
我也一直在努力解决这个问题,使用 .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"
总计 @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
这是@rckoenes、@Riddick 的回答和这个 fastlane github issue submission 的组合。
我正在尝试@Riddick 的回答以获得更清晰的工作流程,但我无法下载元数据。出于某种原因,它只生成元数据路径文件夹,但没有从 iTunesConnect 下载的元数据。我做了一些试验和错误,并从上面的 link 中找到了这行代码:
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
***我没有使用用户名参数,因为我在我的传送文件中有它。