为什么fastlane工作目录不同于我设置的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么fastlane工作目录不同于我设置的相关的知识,希望对你有一定的参考价值。

使用Jenkins的fastlane。 Jenkins将pwd设置为一个目录,让我们称之为directory1,它具有标准的Fastfile和fastlane子文件夹,如下所示:

MacBook-Pro:directory1 user$ tree

├── fastlane
│   ├── Deliverfile
│   
├── Fastfile

Jenkins然后从该目录执行fastlane。当使用需要路径的fastlane动作时,如果我使用假设工作目录是directory1的路径,那么一切正常。我不明白的是,为什么当我从fastlane查询pwd时,无论是使用sh动作还是直接使用Ruby Dir.pwd,两者都给我值/ MacBook-Pro / directory1 / fastlane而不是工作目录我设置/ MacBook-Pro / directory1。关于fastlane对这里的目录做了什么,我有什么遗漏?

答案

当使用sh()运行shell命令时,Fastlane有一些时髦的目录行为。解决方法是在运行..等shell命令时更改目录,或在pwd前面添加路径。

根据official docs

...每个动作和每个插件的代码都在项目的根目录中运行,而Fastfile中的所有用户代码都在./fastlane目录中运行。将现有代码从Fastfile迁移到您自己的操作或插件时,这一点很重要。要手动更改目录,可以使用标准Ruby块:

Dir.chdir("..") do # code here runs in the parent directory end

这种行为并不是很好,而且自快车道的早期以来就一直如此。尽管我们想改变它,但是没有好的方法可以做到这一点,而且不会破坏成千上万的生产设置,因此我们决定暂时保留它。

以上是关于为什么fastlane工作目录不同于我设置的的主要内容,如果未能解决你的问题,请参考以下文章

Fastlane 与 Amazon S3 匹配“拒绝访问”

内部版本号不是由 fastlane 设置的,而是由 Xcode 设置的

通过 Fastlane 监控 Git 标签以自动生成构建

VS 代码执行不同于代码文件

Fastlane Gym 配置 Ad Hoc Distribution

VSTS Task Apple App Store 要求提供 2FA 代码,但设置了 Fastlane Session 和 App-Specific