web-dev-qa-db-ja.com

必要なコンテキストクラスHUDSON.FILEPATHが見つかりませんが、これを提供するステップでコードを囲むのを忘れています。

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は、これを提供するステップでコードを囲むのを忘れています。

正しい方法は何をしているのかを提案する。

4
manish soni

スクリプト化されたパイプラインを使用して、ノードセクション内に「ロード」命令を入力する必要があります(「 この質問 」または既に宣言型パイプラインを使用している場合は、(ケースのようです)。 「環境」に含める:

environment {
    REPO_PATH='/home/manish/Desktop'
    APP_NAME='test'
    MY_FUN = load 'testfun.groovy'
}
 _
2
quietbird

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}')
                }
             }
         }
     }
  }

}
 _
1
Suresh Kandru