web-dev-qa-db-ja.com

Jenkins共有ライブラリからパイプラインにクラスをインポートする方法

共有ライブラリの/ varディレクトリでいくつかのグローバルメソッドを使用していて、すべてが正常に動作しました。プロセスの状態を保持する必要があるので、グルーヴィーなクラスを作成しています。基本的に私は '/ src'に 'ClassTest.groovy'というクラスがあります。これは次のようなものです。

class ClassTest {
    String testString
    def method1() { ... }
    def method2() { ... }
}

パイプラインの開始時に

library 'testlibrary@'
import ClassTest

結果:

WorkflowScript:2:クラスClassTest @行2、列1を解決できません。
Import ClassTest

以前、私はただ好きでした

library 'testlibrary@' _

とメソッドを使用して

script {
    libraryTest.method1()
    ...
    libraryTest.method2()
}

メソッドはファイル「/var/libraryTest.groovy」にあり、すべてが機能しました。だから私は共有ライブラリがあることを知っていますが、groovy/Jenkinsがクラス/共有ライブラリを処理する方法に戸惑っています。

クラスをインポートする正しい方法は何ですか?ドキュメントに簡単な例(groovyファイル、ファイル構造、パイプラインを含む)が見つかりません。

編集:私はファイルを「src/com/company/ClassTest.groovy」に移動し、パイプラインを次のように変更しました

@Library('testlibrary@') import com.company.ClassTest
def notification = new ClassTest()

しかし今、エラーは

予期しないトークン:パッケージ@行2

groovyファイルの最初の2行は次のとおりです。

// src/com/company/ClassTest.groovy
package com.company;
7
cauchy

これまでのところ、これは私が見つけたものです。

ライブラリをパイプラインにロードするには、次のようにしました。

@Library('testlibrary@') import com.company.ClassTest
def notification = new ClassTest()

クラスファイルで、nopackage命令。他のファイルやクラスがないので必要ないので、実際にはパッケージは必要ありません。また、クラスとクラスがあるファイルに同じ名前を使用すると、エラーが発生しました。エラーは特に不満を述べ、そのうちの1つを変更するように求めました。この2つはジェンキンスに関連していると思います。

それが機能し、ライブラリがロードされます。

4
cauchy