所以这是我的项目设置
所有管道脚本都引用共享的groovy项目.我浏览了共享库以及在Jenkins全局配置中注册的所有需求.
有没有办法没有它?我尝试使用Grab但最终得到了错误
java.lang.RuntimeException: No suitable ClassLoader found for grab
Run Code Online (Sandbox Code Playgroud) 首先,我是Java,Groovy和Jenkins的新手,所以请耐心等待我;)
我正在准备一个带有管道支持的Jenkins服务器,以备将来在我们的构建环境中使用。我们使用一种特殊的内部脚本语言,为此我必须用Java编写包装器。没有选择只能在Groovy中完成工作,我们必须使用这种特殊语言。
我尝试了许多将Java库引用到此jenkins项目的方法,但均无济于事。主要是我使用了https://github.com/jenkinsci/workflow-cps-global-lib-plugin上的文档来实现此目的,但是还尝试了几种搜索google或stackoverflow的方法。根据文档,应该可以包括在内。
我已将过程简化为用于测试目的的测试设置。
假设以下...
我在詹金斯有一个名为“ MultibranchTestProject01”的多分支项目。
Jenkins文件:
@Library('DeltaJenkinsScripts@develop')
def runStageCollect = true
if (runStageCollect)
{
stage("Collect")
{
helloWorld("Joe")
}
}
Run Code Online (Sandbox Code Playgroud)
被引用的库通过Jenkins设置中的“全局管道库”进行全局引用,但在此也进行了明确说明。它托管在git环境中,引用似乎可以正常工作。该库的文件结构:
/vars/helloWorld.groovy
package de.dcomp.prod
def call(name) {
def tt = new Test()
tt.testText()
}
Run Code Online (Sandbox Code Playgroud)
/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}"
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为ScriptRunner-0.0.1-SNAPSHOT.jar的Java库。该库只有一个类:
package de.dcomp.ftel;
public class ScriptRunner
{
public String GetInstanceSampleText()
{
return …Run Code Online (Sandbox Code Playgroud) Jenkins接缝忽略来自/ etc/environment或/etc/profile.d/jdk.sh的系统CLASSPATH参数.我尝试在Scriptler中运行Groovy脚本,但是我收到此错误:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321
Run Code Online (Sandbox Code Playgroud)
我已经在Jenkins中安装了MySQL数据库插件(https://wiki.jenkins-ci.org/display/JENKINS/MySQL+Database+Plugin),但仍然无法通过在Jenkins控制台和Scriptler中找到的MySQL驱动程序加载:
import groovy.sql.Sql
Sql.newInstance("jdbc:mysql://HOST:3306/DB", "USER", "PASS", "com.mysql.jdbc.Driver")
Run Code Online (Sandbox Code Playgroud)
在我将Jenkis"全局属性">"环境变量"下的CLASSPATH设置为
Name CLASSPATH
Value .:/var/lib/jenkins/plugins/database-mysql/WEB-INF/lib/mysql-connector-java-5.1.21.jar
Run Code Online (Sandbox Code Playgroud)
Jenkins能够运行Jobs,但Jenkins Script Console/Scriptler仍无法找到jar文件.