共有ライブラリの/ 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;
これまでのところ、これは私が見つけたものです。
ライブラリをパイプラインにロードするには、次のようにしました。
@Library('testlibrary@') import com.company.ClassTest
def notification = new ClassTest()
クラスファイルで、nopackage命令。他のファイルやクラスがないので必要ないので、実際にはパッケージは必要ありません。また、クラスとクラスがあるファイルに同じ名前を使用すると、エラーが発生しました。エラーは特に不満を述べ、そのうちの1つを変更するように求めました。この2つはジェンキンスに関連していると思います。
それが機能し、ライブラリがロードされます。