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

sto*_*uwg 3 directory macos jenkins fastlane

使用Jenkins的fastlane。Jenkins将pwd设置为目录,将其命名为directory1,该目录具有标准的Fastfile和fastlane子文件夹,如下所示:

MacBook-Pro:directory1 user$ tree

??? fastlane
?   ??? Deliverfile
?   
??? Fastfile
Run Code Online (Sandbox Code Playgroud)

然后,詹金斯从该目录执行fastlane。当使用需要路径的快速通道操作时,如果我使用假定工作目录为directory1的路径,则一切正常。不过,我不明白的是为什么当我通过使用sh操作甚至直接使用Ruby Dir.pwd从fastlane中查询pwd时,都给我值/ MacBook-Pro / directory1 / fastlane而不是正常工作我设置的/ MacBook-Pro / directory1目录。对于这里的目录,fastlane在做什么,我会丢失什么?

sho*_*ing 6

当使用.NET运行Shell命令时,Fastlane具有一些时髦的目录行为sh()。解决方法是更改​​目录,或..在运行诸如shell命令之类的路径之前添加路径pwd

根据官方文档

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

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

自从Fastlane成立之初,这种行为就不好了。尽管我们想对其进行更改,但是没有最好的方法来进行更改,而又不破坏数千个生产设置,因此我们决定将其保留为目前状态。

  • 哇,我本来可以省掉最后两杯黑咖啡。谢谢! (4认同)