在下面的屏幕截图中,一些调试条目显示输出文本(最后带有- Print Message
),而其他调试条目只显示Print Message
。要查看这些内容,您必须展开步骤以查看输出。
所有行都使用格式print "TEXT HERE"
。我尝试过使用print
,println
和echo
。所有都有相同的输出。
为什么这些有时会显示消息,而其他人则强迫它进入折叠部分?是否可以将其配置为始终显示?正常的非蓝海詹金斯界面显示正常,但有很多冗长。
答案 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在步骤标签中显示带引号的简单字符串,但其他所有内容均作为“打印消息”显示。
请注意,“普通”变量(字符串,整数)未包含在此示例中,但它们也会正常显示在标签中。因此,如果您有这样的代码
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 step的label
参数:
def message = 'Hello World'
sh(script: "echo $message", label: message)