如何在子文件夹中运行 Fastlane 操作

Posted

技术标签:

【中文标题】如何在子文件夹中运行 Fastlane 操作【英文标题】:How to run Fastlane action in a subfolder 【发布时间】:2016-09-01 06:50:58 【问题描述】:

我正在使用 Fastlane 构建我的 ios 项目,并且我正在使用 Carthage 操作

问题是我在不同的子文件夹中有几个 iOS 项目,所以我需要在该子文件夹中运行 carthage(command: "bootstrap")

我尝试切换到项目所在的目录,但它不起作用

lane :test do
    Dir.chdir("../MyProject") do
        carthage(command: "update")
    end
end

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

我最终只是在子文件夹中调用了一个脚本:

lane :build do
    Dir.chdir("../MySubdir") do
        sh "carthage bootstrap --platform iOS"
    end
end

【讨论】:

【参考方案2】:

我遇到了类似的问题,有几个类似的项目,并试图为他们所有人重新使用 Fastfile

我的方法是在根 MyProject/fastlane 文件夹上有一个通用的 Fastfile,其中包含所需的所有逻辑,例如您的

lane :test do
  carthage(command: "update")
end

然后,对于每个项目/子文件夹,您都有一个只有 loads the main Fastfile from your ../MyProject folder 的 Fastfile,例如:

import "../MyProject/fastlane/Fastfile"

之后,您可以在具有所有项目共享逻辑的特定文件夹上执行命令,能够只在一个地方解决问题和增加命令,还可以使用override_lane command为每个项目进行自定义

【讨论】:

你知道你是否也可以用 import_from_git 做到这一点吗? @jesses.co.tt 我相信确实如此。我已经在 Fastlane 的早期 2.x 版本上进行了测试,当时它确实有效,我建议在较新的版本上进行测试以确保它仍然有效

以上是关于如何在子文件夹中运行 Fastlane 操作的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 fastlane 在 Firebase 测试实验室中运行 XCUItest?

iOS - 如何在 fastlane 快照中传递构建参数

Fastlane:如何根据 --env 从父目录加载 .env 文件

如何手动将现有的配置文件和证书添加到 fastlane 匹配?

如何使用 .env 文件覆盖 fastlane 的 appfile 中的值

运行命令 fastlane init 时,Fastlane 永远卡住