2017-02-23 8 views
1

Jenkinsからのfastlaneの使用。ジェンキンスは、ディレクトリへのPWDを設定し、このような標準Fastfileとfastlaneサブフォルダを持っていること、それをdirectory1の呼び出すことができます:なぜ私が設定したものとは異なる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を設定します。ファストレーンがここのディレクトリについて何をしているのか、何が分からないのですか?

答えて

1

Fastlaneには、sh()のシェルコマンドを実行する際に、いくつかのファンキーなディレクトリ動作があります。回避策は、ディレクトリを変更するか、pwdのようなシェルコマンドを実行しているときにパスを..の先頭に追加することです。

official docsあたりとして:

Fastfileからすべてのユーザーコードが./fastlaneディレクトリ内で実行されている間...すべてのアクションと、すべてのプラグインのコードは、プロジェクトのルートで実行されます。これは、既存のコードをFastfileから独自のアクションまたはプラグインに移行する際に考慮する必要があります。ディレクトリを変更するには手動で標準Rubyのブロックを使用することができます。

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

をこの動作は大きくなく、かつfastlaneの非常に初期の頃から、このようにされています。私たちが変更したいのと同じくらい、何千ものプロダクション設定を壊さずにこれを行う良い方法はないので、今のところそれをそのままにしておくことにしました。

+0

素晴らしい回答、ありがとう – stonedauwg

関連する問題