17

在下面的屏幕截图中,一些调试条目显示输出文本(- Print Message末尾带有),而另一些则仅显示Print Message. 要查看这些,您必须展开步骤以查看输出。

詹金斯蓝海输出

所有行都使用格式print "TEXT HERE"。我试过使用print,printlnecho. 都具有相同的输出。

为什么这些有时会显示消息,而另一些会强制将其放入折叠部分?是否可以将其配置为始终显示?正常的非 Blue Ocean Jenkins 界面显示良好,但有很多冗长。

4

5 回答 5

6

看来,如果 echo 使用具有来自参数或环境的值的变量(即“params.*”),则步骤标签将获得“打印消息”名称,而不是回显实际值。变量本身是否为字符串并不重要。即使将 params 值显式转换为 String 也无济于事。

String param_str
String text_var_2

parameters {
    string(name: 'str_param', defaultValue: 'no value')
}

                param_str = params.str_param.toString()

                echo "string text in double quotes is ${param_str}"
                echo "simple quoted string is here"
                echo 'simple quoted string is here' 
                echo 'Single quoted with str ' + param_str + ' is here'
                echo param_str                    
                text_var_2 = 'Single quoted str ' + param_str + ' combined' 
                echo "GString global text2 is ${text_var_2}" 
                echo 'String global text2 is' +  text_var_2

BlueOcean 在步骤标签中显示简单的引用字符串,但其他所有内容都显示为“打印消息”。

蓝海输出

请注意,“正常”变量(字符串、整数)不包含在此示例中,但它们也正常显示在标签中。所以如果你有这样的代码

def text_str = 'Some string'
def int_var = 1+2
echo text_str + ' is here'
echo int_var

这些将显示在标签上。

实际上,如先前的答案所述,这似乎是一个已知的 Jenkins 问题。

于 2019-05-23T17:51:09.977 回答
6

这似乎是一个已知问题: https ://issues.jenkins-ci.org/browse/JENKINS-53649

看起来 BlueOcean 没有正确处理 Groovy GStrings。这是我观察到的:

一个简单的:

echo "hello world"

将按预期工作并正确显示。而带有变量的模板化字符串,例如:

echo "hello ${some_variable}"

将隐藏“打印消息”下拉列表下的消息。

另请参阅此答案

于 2018-11-05T18:50:19.607 回答
5

这是一个已知的BlueOcean 错误。“经典”视图中的控制台输出正确地插入变量。

一种解决方法是使用sh 步骤label的参数:

def message = 'Hello World'
sh(script: "echo $message", label: message)
于 2019-10-25T12:27:15.433 回答
1

我尝试了很多东西,似乎在显示环境变量的那一刻,它使用打印消息而不是文本。

于 2018-05-21T19:01:08.997 回答
0

另一种解决方法是将多行字符串拆分为一个数组并对其进行迭代:-

 String[] splitData = MULTI_LINE_STRING.split("\n");
     for (String eachSplit : splitData) {
         print(eachSplit);
      }
于 2022-01-20T23:01:57.513 回答