JenkinsFileに別のGroovyファイルをロードすると、次のエラーが表示されます。
「必要なコンテキストクラスHUDSON.FilePathはなく、このようなコードを提供する手順でコードを囲むのを忘れています。
私は関数を含むGroovyファイルを作り、私は宣言的なJenkinsFileでそれを呼び出したいです。しかしそれは誤りを示しています。
My Jenkinsfile--->
def myfun = load 'testfun.groovy'
pipeline{
agent any
environment{
REPO_PATH='/home/manish/Desktop'
APP_NAME='test'
}
stages{
stage('calling function'){
steps{
script{
myfun('${REPO_PATH}','${APP_NAME}')
}
}
}
}
}
_
結果 -
org.jenkinsci.plugins.Workflow.Steps.MissingContextVariableException:必要なコンテキストクラスHUDSON.FilePathは、これを提供するステップでコードを囲むのを忘れています。
正しい方法は何をしているのかを提案する。
スクリプト化されたパイプラインを使用して、ノードセクション内に「ロード」命令を入力する必要があります(「 この質問 」または既に宣言型パイプラインを使用している場合は、(ケースのようです)。 「環境」に含める:
environment {
REPO_PATH='/home/manish/Desktop'
APP_NAME='test'
MY_FUN = load 'testfun.groovy'
}
_
Jenkinsエグゼクティックがノード上で実行されるため、特定のエージェントノードで実行したい場合はJENKINSエグゼクティックがノードで実行されるため、ノード( 'エージェント名'){}のように言及することができます。
例ここで:
node {
def myfun = load 'testfun.groovy'
pipeline{
agent any
environment{
REPO_PATH='/home/manish/Desktop'
APP_NAME='test'
}
stages{
stage('calling function'){
steps{
script{
myfun('${REPO_PATH}','${APP_NAME}')
}
}
}
}
}
}
_