如何在Jenkins控制台输出中编写内容?

4

我正在编写一个适用于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
    }
}

我在我的Jenkins日志中看到了[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)

https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-echo-code-print-message? - jonrsharpe
{btsdaf} - Valter Silva
1
{btsdaf} - jonrsharpe
{btsdaf} - Valter Silva
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}"
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接