如何在Jenkins控制台输出上写?

问题描述 投票:2回答:1

我正在为我的Jenkins管道编码一个库。我想为我的消息打印不同的格式,如 [INFO], [WARNING] 诸如此类。

到目前为止,我有这个。

import org.foo.Output

def call(body) {

    def config = [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = config
    body()

    def out = new Output()

    node("${config.slaveNodeName}") {
        try {
            stage ('CLONE') {
                out.info("SOME VERY USEFUL INFORMATION")
        ...

而在我的 org.foo.Output 类。

package org.foo

import java.util.logging.Logger


class Output {
    private static final Logger LOGGER = Logger.getLogger(Output.class.getName());

    def info(msg){
        LOGGER.info("${msg}")
        echo "[INFO] ${msg}" <-- gives me an exception described below
    }
}

我可以看到 [INFO] SOME VERY USEFUL INFORMATION 然而,我想把这个消息重定向到Jenkins的输出控制台。

我该怎么做呢?

异常。

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.foog.Output.echo() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [[INFO] SOME VERY USEFUL INFORMATION]
Possible solutions: each(groovy.lang.Closure), info(java.lang.Object), wait(), grep(), any(), find()
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:19)
jenkins groovy jenkins-plugins jenkins-pipeline
1个回答
3
投票

Valter,试试这个。它在我的脚本中有效,我想它在你的脚本中也会有效。

在 groovy 脚本中,添加这个。

node("${config.slaveNodeName}") {
        try {
            stage ('CLONE') {
                out.info(this,"SOME VERY USEFUL INFORMATION")

然后把 groovy 脚本的类改成这样:

def info(script,msg){
        LOGGER.info("${msg}")
        script.echo "[INFO] ${msg}"
    }
© www.soinside.com 2019 - 2024. All rights reserved.