私は、次のユースケースがあります。ジェンキンスパイプライン:再使用、ワークスペースの外部ジェンキンスパイプラインのスクリプトを読み込む
チェックアウト/、特定のGitのリビジョンを引く書かれたパイプラインスクリプトを使用して
(私はので、これを必要とします私はそのリビジョンから動的に改訂)を取得し、以前のファイル
このファイルは、ファイルに依存しているでしょうが、チェックアウトの間に位置ジェンキンス・パイプライン・ファイルをロード同じチェックアウトしたリビジョン
から(したがって、同じワークスペースから)
問題:ロードされたジェンキンス・パイプライン・ファイルは、新しいワークスペースで実行されます。しかしそれは空です。私は同じ古いワークスペースで実行するには、そのファイルが必要です。
node
キーワードは、ドキュメントに記載されているように、ワークスペースを作成するため、恐らく周囲の理由であると考えていました。しかし、をnode
の外側にロードしようとしたとき、ジェンキンスは「サンドボックスを離れる」ためにこれを許可しませんでした。
注:jenkins-pipeline-fileが見つかり、実際に実行されます。問題は実行中にです。
サンプルコードを見てください:
インライン化パイプラインスクリプト
node('master') {
def latestBuildableRevision = readFile '/my/LATEST-BUILDABLE-REVISION.txt'
checkout poll:false,
scm:[$class:'GitSCM', branches:[[name:latestBuildableRevision]],
doGenerateSubmoduleConfigurations:false,
extensions:[[$class: 'CleanBeforeCheckout']], submoduleCfg:[],
userRemoteConfigs:[[credentialsId:'...', url:'...']]]
load 'further-script-logic.jenkins'
}
ファイル:さらに-スクリプトlogic.jenkins
node('master') {
// make use of certain files
// assumption: pwd() is the *same* workspace which were checked-out before
// problem: it's not, it's a new empty workspace
}
グレート!そして、スクリプトDOと呼ばれる複数のノードが動作します! :) – Iviator
この「機能」は信じられないほど発見するのが難しい...私はそれを見つけたが、文書化する必要があることを誇りに思っている。パイプラインごとに複数のエグゼキュータを産んだら、あなたが私に尋ねるとばかげてばかげている。チェックボックス機能 "連鎖スクリプト実行"またはそれらの行に沿ったものである必要があります – sloven