相关疑难解决方法(0)

Jenkins Pipeline - 在共享jar中调用函数

所以这是我的项目设置

  1. 一个单独的groovy项目
  2. 多个管道

所有管道脚本都引用共享的groovy项目.我浏览了共享库以及在Jenkins全局配置中注册的所有需求.

有没有办法没有它?我尝试使用Grab但最终得到了错误

java.lang.RuntimeException: No suitable ClassLoader found for grab
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline jenkins-shared-libraries

12
推荐指数
1
解决办法
857
查看次数

如何在Groovy Jenkins Pipeline中使用全局外部Java库中的方法?

首先,我是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)

java groovy jenkins jenkins-pipeline

2
推荐指数
1
解决办法
4662
查看次数

Jenkins脚本控制台/ Scriptler中的Connector/J MySQL驱动程序

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文件.

mysql groovy jenkins

0
推荐指数
1
解决办法
5941
查看次数