2016-04-29 4 views
25

現在、私はJenkins Pipelineプラグイン(以前はWorkflowプラグインと呼ばれています)で何らかの評価を行っています。Jenkins Pipelineプラグインのワークスペースディレクトリへの絶対パスを取得

次の変数は、現在のワークフロー・スクリプトの内部使用できません:

NODE_LABELS

WORKSPACE

私は現在、 env.WORKSPACEを使用して、ワークスペースのパスをretrievことができないことが判明ドキュメントを読ん SVN_REVISIONなどのSCM固有の変数

現在のワークスペースへの絶対パスを取得する方法は他にありますか?私はこれがいくつかのテストを実行する必要があります。これはいくつかのパラメータ(いくつかの実行可能ファイルの絶対パス)を取得します。 私はすでに@NonCPSセクションの中でnew File("").absolutePath()を使ってみましたが、非CPSのものは常にマスターで実行されるようです。

なしでなしでパスを取得する方法はありますか?後で再び読み込むことができるファイルにパスを保存するバッチスクリプトを実行していますか?

答えて

8

Pipeline Nodes and Processes Plugin(デフォルトでインストールされているPipelineプラグインのコンポーネント)のバージョン2.5以降、WORKSPACE環境変数が再び利用可能です。このバージョンは2016年9月23日にリリースされたので、すべての最新のJenkinsインスタンスで利用できるようにする必要があります。

28

:このソリューションは、スレーブがマスターと同じディレクトリ構造を持つ場合にのみ機能します。 pwd()は、JENKINS-33511のためにマスタ上のワークスペースディレクトリを返します。

パイプラインプラグインのpwd()機能を使用していました。したがって、スレーブでワークスペースを取得する必要がある場合は、次のようにしてください。

node('label'){ 
    //now you are on slave labeled with 'label' 
    def workspace = pwd() 
    //${workspace} will now contain an absolute path to job workspace on slave 
} 

希望すると助かります。

+0

Damn。眼鏡が必要かもしれません。完全にpwd()が利用可能であることを忘れてしまった。それはまさに私が探していたものでした。ありがとう! –

+0

そして、このチケット(https://issues.jenkins-ci.org/browse/JENKINS-33511)の議論によれば、 'pwd()'はマスターの作業ディレクトリを返します。あなたがいるノード。 –

+0

事実私はちょうど自分で確認しました。 'pwd()'はマスターと同じディレクトリ構造を持たない限り、スレーブでは動作しません。 –

0

スクリプトを使用している場合、ワークスペースの概念は無意味です。あなたの最善の策は、ファイルを文字列に読み込むためにreadFileを使用し、その文字列をライブラリに渡して処理することです。 pwd()メソッドはマスター上で実行され、ファイルはノードに格納されるため、手助けできません。

関連する問題