1. ホーム
  2. jenkins

Jenkins Pipelineプラグインでワークスペース・ディレクトリの絶対パスを取得する

2023-10-02 05:37:52

質問

現在、Jenkins Pipeline プラグイン (旧 Workflow プラグイン) の評価を行っています。 ドキュメントを読むと、現在、ワークスペースのパスを取得するために env.WORKSPACE :

現在、以下の変数はワークフロースクリプト内で使用することができません。

NODE_LABELS

ワークスペース

SVN_REVISION のような SCM 固有の変数

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

このパスを取得するための手がかりをお持ちの方はいらっしゃいますか? を使わずに バッチスクリプトを実行して、パスをファイルに保存し、後で再び読み込むことができるようにするにはどうしたらよいでしょうか?

どのように解決するのですか?

バージョン 2.5 以降の Pipeline Nodes and Processes Plugin (パイプラインノードとプロセスプラグイン) (Pipeline プラグインのコンポーネントで、デフォルトでインストールされます)では WORKSPACE 環境変数が再び利用可能になりました。このバージョンは2016-09-23にリリースされたので、最新のJenkinsインスタンスで利用できるはずです。

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

    workspace = env.WORKSPACE
    // ${workspace} will still contain an absolute path to job workspace on slave

    // When using a GString at least later Jenkins versions could only handle the env.WORKSPACE variant:
    echo "Current workspace is ${env.WORKSPACE}"

    // the current Jenkins instances will support the short syntax, too:
    echo "Current workspace is $WORKSPACE"

}