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

ljo96ir5  于 2023-05-16  发布在  Jenkins
关注(0)|答案(2)|浏览(161)

使用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在目录方面做了什么,我错过了什么?

np8igboo

np8igboo1#

Fastlane在使用sh()运行shell命令时有一些奇怪的目录行为。解决方法是更改目录,或者在运行pwd之类的shell命令时,在路径前添加..
根据官方文档:
...每个动作和每个插件的代码都在项目的根目录中运行,而Fastfile中的所有用户代码都在./fastlane目录中运行。在将现有代码从Fastfile迁移到您自己的action或插件时,这一点非常重要。要手动更改目录,您可以使用标准Ruby块:
Dir.chdir("..") do # code here runs in the parent directory end
这种行为并不好,从fastlane的早期就一直如此。尽管我们很想改变它,但没有好的方法来做到这一点,而不破坏成千上万的生产设置,所以我们决定保持它现在的样子。

63lcw9qa

63lcw9qa2#

您还可以基于PWD env var

lane :pwd do
  puts ENV['PWD']
  # this will echo the current dir your shell is in
end

相关问题