如何强制Jenkins Blue Ocean显示打印输出而不是“打印消息”?

时间:2018-03-29 20:01:18

标签: jenkins groovy jenkins-pipeline jenkins-blueocean

在下面的屏幕截图中,一些调试条目显示输出文本(最后带有- Print Message),而其他调试条目只显示Print Message。要查看这些内容,您必须展开步骤以查看输出。

Jenkins Blue Ocean Output

所有行都使用格式print "TEXT HERE"。我尝试过使用printprintlnecho。所有都有相同的输出。

为什么这些有时会显示消息,而其他人则强迫它进入折叠部分?是否可以将其配置为始终显示?正常的非蓝海詹金斯界面显示正常,但有很多冗长。

4 个答案:

答案 0 :(得分:1)

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

看来,BlueOcean无法正确处理Groovy GString。这是我观察到的:

简单:

echo "hello world"

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

echo "hello ${some_variable}"

会将消息隐藏在“打印消息”下拉菜单下。

另请参阅this answer

答案 1 :(得分:1)

看来,如果echo使用的变量具有参数或环境中的值(即“ params。*”),则步骤标签将获得“打印消息”名称,而不是要回显实际值。变量本身是否为String都没有关系。甚至将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在步骤标签中显示带引号的简单字符串,但其他所有内容均作为“打印消息”显示。

BlueOcean output

请注意,“普通”变量(字符串,整数)未包含在此示例中,但它们也会正常显示在标签中。因此,如果您有这样的代码

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

这些将显示在标签上。

确实,这似乎是先前答案中提到的詹金斯问题。

答案 2 :(得分:0)

我尝试了很多东西,似乎将要显示一个环境变量,它使用Print Message代替文本。

答案 3 :(得分:0)

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

一种解决方法是使用sh steplabel参数:

def message = 'Hello World'
sh(script: "echo $message", label: message)