gpt4 book ai didi

jenkins - 使用 Jenkins 动态共享库进入管道

转载 作者:行者123 更新时间:2023-12-02 00:59:53 24 4
gpt4 key购买 nike

我不知道如何定义动态共享库,并将其用于我的管道:

myLib=library (identifier: 'lib@master', retriever: modernSCM(
[$class: 'GitSCMSource',
remote: 'https://mygit.orga.com/git/ORGA/Jenkins-libs.git',
credentialsId: 'aaaaaaa-8f3f-4e3c-vvvvvvv-6c77351e7872',
includes: '*',
excludes: 'test'
]))

pipeline {

agent {

node(){
label("linux&&!master")
}
}


tools {
jdk "JDK1.8.0_45"
maven "MVN339"
}
stages{
stage("test lib"){
steps {
script {

myLib.a.b.c.Utils.sayHelloTo("Guillaume")
log.info("test lib")
}
}

}
}

在运行时它失败了:
java.lang.ClassNotFoundException: Utils
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

关于什么是错误的任何想法?我在网上找不到关于动态共享库教程的任何信息。

编辑:添加库树:
src
--a
--b
--c
Utils.groovy
Utils.groovy内容:

package a.b.c

class Utils {

def sayHelloTo(String name) {
script.echo("Hello there $name")
}
}

谢谢你们,
纪尧姆

最佳答案

我无法解释你得到的 CNFE,但这段代码肯定有几个问题。

  • sayHelloTo方法未声明为 static然而,它被称为一体。
  • script.echo似乎无效,因为我看不到 script在这里是一个有效的名字。

  • 如果要将其用作静态函数,请像这样更改函数
    <     def sayHelloTo(String name) {
    > static sayHelloTo(def steps, String name) {

    对调用的唯一更改是传递 this (这应该是指管道步骤):
    <           myLib.a.b.c.Utils.sayHelloTo("Guillaume")
    > myLib.a.b.c.Utils.sayHelloTo(this, "Guillaume")

    如果您想将其保留为实例方法,那么您仍然需要接受步骤:
    <     def sayHelloTo(String name) {
    > def sayHelloTo(def steps, String name) {

    但是,调用会像这样改变:
    <           myLib.a.b.c.Utils.sayHelloTo("Guillaume")
    > myLib.a.b.c.Utils.new().sayHelloTo(this, "Guillaume")

    在所有情况下, echo调用将更改为:
    <         script.echo("Hello there $name")
    > steps.echo("Hello there $name")

    关于jenkins - 使用 Jenkins 动态共享库进入管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51326983/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com