私はJenkinsのマスターで実行しているJenkinsの宣言的パイプラインを持っています。しかし、スレーブノードでこれを実行しようとしたので、パイプラインで呼び出されるGroovyスクリプトはワークスペース内のファイルにアクセスできません。Jenkins宣言型パイプライン、スレーブエージェントでgroovyスクリプトを実行
私jenkinsfileが...このようになります
pipeline {
agent {
label {
label "windows"
customWorkspace "WS-${env.BRANCH_NAME}"
}
}
stages {
stage('InitialSetup') {
steps {
"${env.WORKSPACE}/JenkinsScripts/myScript.groovy"
}
}
}
私はそれは、ワークスペースを作成するにgitからチェックアウトをして、そして正確にスクリプトを実行しているスレーブで見ることができます。ただし、スクリプト内の何かがワークスペース内のファイルと対話しようとすると失敗します。
私はこのような単純なものを持っている場合...
def updateFile(String filename) {
echo env.NODE_NAME
filename = "${env.WORKSPACE}/path/to/file"
def myFile = new File(filename)
<do other things with the file>
}
...それはそれは指定されたファイルを見つけることができないと言います。それは私にそれが探しているパスを与え、私はファイルが存在することを確認することができ、コードはマスター上に構築するときに実行されます。
マスターノードで実行しているときに、このようなファイルが見つからないのはなぜですか?私はgroovyファイルに "echo env.NODE_NAME"コマンドを追加しました。スクリプトは正しいノードで実行されています。
ありがとうございました。
この問題は、特にFileの使用に関連しているようですが、マスターでは実行できるがエージェントでは実行できないと考えられるためです。まだ調査中。 – FloatingCoder