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

问题描述 投票:3回答:1

使用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对这里的目录做了什么,我有什么遗漏?

macos jenkins directory fastlane
1个回答
4
投票

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

根据official docs

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.