一連のJenkinsfileスクリプトがありますが、それぞれがJenkinsfileを保持するSCMチェックアウト内のディレクトリを指すように環境項目を構成します。これは、同じディレクトリ内のファイルを参照するために使用されます。 SCMリポジトリでは、これらのJenkinsfileスクリプトがすべて別のディレクトリにあります。 Jenkinsfileを含むディレクトリのパスしか取得できなかった場合は、パイプラインスクリプトを同じように簡単に開くことができます。
含むステップのようないくつかの異なることを試しました
script {
println __FILE__
}
そして
script {
scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
println scriptDir
}
どちらも実行されませんでした(__FILE__
のケースでは存在しない変数を、2番目のケースでは権限違反を与えました)。 "${__FILE__}"
やその他の亜種を試しました。
私はディレクトリをsteps-shブロックで使用する必要があるため、環境アイテムに含める必要があると思います。
今、Jenkinsジョブ構成はJenkinsファイルへのパスを提供しますが、そのレベルで別の環境変数を作成するためにそれを繰り返す必要はありません。
相談済み:
助けていただければ幸いです。
本当にこれが必要な場合は、"${JOB_URL}config.xml"
およびscriptPath
を解析します。
しかし、それは明らかにクリーンなソリューションではありません。
別のスレッド で見つかりました:
def currentScriptPath = new File(currentBuild.rawBuild.parent.definition.scriptPath).parent
しかし、それは多くの方法を承認する必要があります。