使用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
前面添加路径。
...每个动作和每个插件的代码都在项目的根目录中运行,而Fastfile中的所有用户代码都在./fastlane目录中运行。将现有代码从Fastfile迁移到您自己的操作或插件时,这一点很重要。要手动更改目录,可以使用标准Ruby块:
Dir.chdir("..") do # code here runs in the parent directory end
这种行为并不是很好,而且自快车道的早期以来就一直如此。尽管我们想改变它,但是没有好的方法可以做到这一点,而且不会破坏成千上万的生产设置,因此我们决定暂时保留它。