为什么fastlane的工作目录与我设置的不同
问题描述:
使用Jenkins的fastlane。詹金斯设置PWD到一个目录,让叫它directory1中,具有标准中fastfile和FASTLANE子是这样的:为什么fastlane的工作目录与我设置的不同
MacBook-Pro:directory1 user$ tree
├── fastlane
│ ├── Deliverfile
│
├── Fastfile
詹金斯然后从该目录执行FASTLANE。当使用需要路径的fastlane动作时,如果我使用假定工作目录为directory1的路径,事情就可以正常工作。但我不明白的是,为什么当我从fastlane查询pwd时,无论是使用sh动作,还是直接使用Ruby Dir.pwd,都会给我/ MacBook-Pro/directory1/fastlane的值而不是工作值目录我设定/ MacBook-Pro/directory1。我错过了关于fastlane在目录中做什么的问题?
答
当涉及到使用sh()
运行shell命令时,Fastlane具有一些时髦的目录行为。解决方法是更改目录,或者在运行shell命令(如pwd
)时使用..
预先安装路径。
由于每official docs:
......每一个动作和每一个插件的代码在项目的根目录中运行,而来自中fastfile所有的用户代码的./fastlane目录内运行。将现有代码从Fastfile迁移到您自己的操作或插件中时,考虑这一点非常重要。要更改目录手动你可以使用标准的Ruby块:
Dir.chdir("..") do # code here runs in the parent directory end
这种行为是不是很大,而且一直是这样,因为FASTLANE的最早期。尽管我们想改变它,但没有好的方法可以做到这一点,而不会破坏成千上万的生产设置,所以我们决定保持现在的状态。
一个很好的答案,谢谢 – stonedauwg