web-dev-qa-db-ja.com

Jenkins共有ライブラリsrcクラス-クラスを解決できません

Jenkins共有ライブラリクラスの設計に関するガイダンスを探しています。共有ライブラリとしてグローバル変数を使用することは問題なく機能しますが、src /でクラスを定義し、それをインポートするたびに、クラスを解決できないというエラーが発生します。

これは私の共有ライブラリ構造です:

src
  - de
   - schlumpf
     - Tester.groovy
vars
  - sayHello.groovy

Class Tester.groovy

これが、パイプラインジョブ内で初期化したいクラスのコードです。

package de.schlumpf

public class Tester implements Serializable {
  public String name = "test"

  Tester(String pName) {
    this.name = pName
  }

  def sayHi() {
    echo "Hello, ${this.name}."
  }

  def sayHi(String name) {
    echo "Hello, ${name}."
  }
}

Var sayHello.groovy

#!/usr/bin/env groovy

def call(String name = 'human') {
  echo "Hello, ${name}."
}

パイプラインジョブ

@Library('pipeline-library-demo')
import de.schlumpf.Tester //de.schlumpf doesn't work as well

stage('Demo') {
    echo 'Hello world'
    sayHello 'test'

    def t = new Tester('Alice')
    t.sayHi()
}

2行目で次のエラーが発生します:Unable to resolve class de.schlumpf.Tester。グローバル変数sayHelloは魅力のように機能します...私がここで間違っていることを誰かが知っていますか?

共有ライブラリはシステム設定にインポートされます: enter image description here

これはこれに似ているようですが、パスにタイプミスや何かが見つかりません... Jenkins Shared Librariesをクラスとして使用

公式ドキュメントはこちら: https://jenkins.io/doc/book/pipeline/shared-libraries/

バージョン

  • ジェンキンス:ver。 2.150.1
  • パイプライン2.6
  • パイプライン:Groovy 2.61.1
  • パイプライン:共有Groovyライブラリ2.12
8
Schlumpf

スクリプトブロック外でクラスのオブジェクトを作成したため、エラーがスローされます。以下のコードを試してみれば、うまくいくはずです。

@Library('pipeline-library-demo')
import de.schlumpf.*;

stages{
    stage('Demo') {  
      steps{
        echo 'Hello world'
        sayHello 'test'
       script{
        def t = new Tester('Alice')
        t.sayHi()
       }
      }
   }
 }  
1
Ajit Vedpathak