私はJava、Groovy、Jenkinsを初めて使用していますので、私には気をつけてください)Groovy Jenkinsパイプラインでグローバル外部Javaライブラリのメソッドを使用するには?
今後、私たちのビルド環境で使用するために、Jipkinsサポートを備えたJenkinsサーバを準備しています。 私は、Javaでラッパーを記述しなければならない特別なinhouseスクリプト言語を使用します。 Groovyのみで作業するオプションはありません。この特別な言語を使用する必要があります。
私はこのjenkinsプロジェクトにjava libを参照する方法を試しましたが、どちらもうまくいきませんでした。 主に私はこれを実装するためにhttps://github.com/jenkinsci/workflow-cps-global-lib-pluginのドキュメントを使用しましたが、googleやstackoverflowを検索するいくつかのアプローチも試みました。ドキュメントに続いて、このインクルードが可能でなければなりません。
テストのためにプロセスをテストセットアップに縮小しました。
は、私が「MultibranchTestProject01」という名前ジェンキンスにおけるマルチブランチプロジェクトを持っている以下の...
を想定します。
Jenkinsfile:
@Library('[email protected]evelop')
def runStageCollect = true
if (runStageCollect)
{
stage("Collect")
{
helloWorld("Joe")
}
}
もの。 これはgit環境でホストされており、参照は機能しているようです。 このライブラリのファイル構造:
/vars/helloWorld.groovy
package de.dcomp.prod
def call(name) {
def tt = new Test()
tt.testText()
}
/src/de/dcomp/prod/Test.groovy
package de.dcomp.prod
import de.dcomp.ftel.*
def testText()
{
def sRetVal = ""
echo "testText - START"
//sRetVal = ScriptRunner.GetStaticSampleText()
def oSR = new ScriptRunner()
sRetVal = oSR.GetInstanceSampleText()
echo "ReturnValue: ${sRetVal}"
}
私はと呼ばれるJavaのlibが持っているにScriptRunner-0.0.1-SNAPSHOT.jar。このライブラリには1つのクラスがあります:
package de.dcomp.ftel;
public class ScriptRunner
{
public String GetInstanceSampleText()
{
return "ScriptRunner.GetInstanceSampleText() called...";
}
public static String GetStaticSampleText()
{
return "ScriptRunner.GetStaticSampleText() called...";
}
}
このライブラリをスタンドアロンJavaプロジェクトで参照して使用する際には問題ありません。テストLinux環境でのクラスパスの設定
- :
I'veは、それを含めるには、いくつかの方法を試してみました。
- プラグイン "パイプライン:クラスパスステップ"を使用して、ライブラリをクラスパスに異なる表記で追加します。 'C:\ Users \ cr.groovy \ lib'、C:/Users/cr/.groovy/lib '、' C:\ Users \ cr.groovy \ lib \ ScriptRunner-0.0.1-SNAPSHOT.jar '、' C:/Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar '、' file:/// C:/Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar 「
- これは私がして
または動的ロードがしたいソリューションではありませんが、ローカルのMavenリポジトリにlibが追加と@GrabResolverと@Grabごとに参照:
this.class.classLoader.rootLoader.addURL(new URL("file:///C:/Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar"));
def srClass = Class.forName("de.dcomp.ftel.ScriptRunner")
def sr = srClass.newInstance()
結果は常にこのようなものです。
groovy.lang.MissingPropertyException: No such property: ScriptRunner for class: de.dcomp.prod.Test
またはこの:
de/dcomp/prod/Test.groovy: 10: unable to resolve class ScriptRunner
@ line 10, column 12.
def oSR = new ScriptRunner()
エラーメッセージは、プロセスがJavaライブラリを見つけることができないという方向に常に指します。他のライブラリを使用しようとすると、同じことが起こりました。 Apache Commonsから。
これが可能であれば、プラグインとして書くことを避けたいと思います。
ありがとうございます!
私はこの「@グラブ」https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/master/README.md#using-third-party-librariesを試していましたが、仕事 – Joan