【问题标题】:Accessing Jenkins pipeline WorkflowScript during execution在执行期间访问 Jenkins 管道 WorkflowScript
【发布时间】:2020-01-15 17:13:14
【问题描述】:

我想知道是否有办法在执行期间访问 Jenkins Workflow 脚本对象。

我有一个共享库,我可以将这个对象作为参数传递给任何 groovy 类,可以直接从 Jenkins 文件使用“this”关键字,也可以从 vars 文件夹中的任何 DSL 使用“this” '关键字。

但我想使用一种方法来访问它,即使这意味着使用自反性。

这可能吗?

【问题讨论】:

    标签: jenkins jenkins-pipeline workflowscript


    【解决方案1】:

    这里是管道示例,其中thisscript 对象。其他一些例子here:

    MyClass myClass = new MyClass()
    
    pipeline {
        agent any
    
        environment {
            VAR1 = "var1"
            VAR2 = sh(returnStdout: true, script: "echo var2").trim()
            VAR3 = "var3"
        }
    
        stages {
            stage("Stage 1") {
                steps {
                    script {
                        myClass.myPrint(this, "${VAR1}", "${VAR2}", "${VAR3}")
                    }
                }
            }
        }
    }
    
    class MyClass implements Serializable {
        void myPrint(def script, String var1, String var2, String... vars) {
            script.echo "myPrint: ${var1}"
        }
    }
    

    【讨论】:

    • 非常感谢。是的,这是一个脚本对象。但是,我想从共享库 groovy 类中访问它,而不必将其作为参数传递给构造函数,或将其注册到库中。我需要一个可以从 Jenkins 访问的方法,它会返回这个对象。
    • AFAIK,你必须通过它。但不是直接从您的 Jenkinsfile 访问类,而是将其包装在一个 var 中(例如,在上面的示例中 vars/myprint.groovy,然后可以将 this 对象作为参数传递(例如 script { myprint("${VAR1}", "${VAR2}", "${VAR3}") }
    猜你喜欢
    • 2020-03-23
    • 2020-04-28
    • 1970-01-01
    • 2021-07-25
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多