2017-02-23 30 views
1

使用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在目錄中做什麼的問題?

回答

1

當涉及到使用sh()運行shell命令時,Fastlane具有一些時髦的目錄行爲。解決方法是更改​​目錄,或者在運行shell命令(如pwd)時使用..預先安裝路徑。

由於每official docs

......每一個動作和每一個插件的代碼在項目的根目錄中運行,而來自中fastfile所有的用戶代碼的./fastlane目錄內運行。將現有代碼從Fastfile遷移到您自己的操作或插件中時,考慮這一點非常重要。要更改目錄手動你可以使用標準的Ruby塊:

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

這種行爲是不是很大,而且一直是這樣,因爲FASTLANE的最早期。儘管我們想改變它,但沒有好的方法可以做到這一點,而不會破壞成千上萬的生產設置,所以我們決定保持現在的狀態。

+0

一個很好的答案,謝謝 – stonedauwg

相關問題