使用Jenkins的fastlane。Jenkins将pwd设置为一个目录,我们称之为directory 1,它具有标准的Fastfile和fastlane子文件夹,如下所示:
MacBook-Pro:directory1 user$ tree
├── fastlane
│ ├── Deliverfile
│
├── Fastfile
Jenkins然后从该目录执行fastlane。当使用需要路径的fastlane操作时,如果我使用假定工作目录为directory 1的路径,则可以正常工作。我不明白的是,为什么当我从fastlane查询pwd时,无论是使用sh操作还是直接使用Ruby Dir.pwd,都给予我值/MacBook-Pro/directory 1/fastlane,而不是我设置的工作目录/MacBook-Pro/directory 1。关于fastlane在目录方面做了什么,我错过了什么?
2条答案
按热度按时间np8igboo1#
Fastlane在使用
sh()
运行shell命令时有一些奇怪的目录行为。解决方法是更改目录,或者在运行pwd
之类的shell命令时,在路径前添加..
。根据官方文档:
...每个动作和每个插件的代码都在项目的根目录中运行,而Fastfile中的所有用户代码都在./fastlane目录中运行。在将现有代码从Fastfile迁移到您自己的action或插件时,这一点非常重要。要手动更改目录,您可以使用标准Ruby块:
Dir.chdir("..") do # code here runs in the parent directory end
这种行为并不好,从fastlane的早期就一直如此。尽管我们很想改变它,但没有好的方法来做到这一点,而不破坏成千上万的生产设置,所以我们决定保持它现在的样子。
63lcw9qa2#
您还可以基于PWD env var