在下面的屏幕截图中,一些调试条目显示输出文本(- Print Message
末尾带有),而另一些则仅显示Print Message
. 要查看这些,您必须展开步骤以查看输出。
所有行都使用格式print "TEXT HERE"
。我试过使用print
,println
和echo
. 都具有相同的输出。
为什么这些有时会显示消息,而另一些会强制将其放入折叠部分?是否可以将其配置为始终显示?正常的非 Blue Ocean Jenkins 界面显示良好,但有很多冗长。
在下面的屏幕截图中,一些调试条目显示输出文本(- Print Message
末尾带有),而另一些则仅显示Print Message
. 要查看这些,您必须展开步骤以查看输出。
所有行都使用格式print "TEXT HERE"
。我试过使用print
,println
和echo
. 都具有相同的输出。
为什么这些有时会显示消息,而另一些会强制将其放入折叠部分?是否可以将其配置为始终显示?正常的非 Blue Ocean Jenkins 界面显示良好,但有很多冗长。
看来,如果 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 问题。
这似乎是一个已知问题: https ://issues.jenkins-ci.org/browse/JENKINS-53649
看起来 BlueOcean 没有正确处理 Groovy GStrings。这是我观察到的:
一个简单的:
echo "hello world"
将按预期工作并正确显示。而带有变量的模板化字符串,例如:
echo "hello ${some_variable}"
将隐藏“打印消息”下拉列表下的消息。
另请参阅此答案。
这是一个已知的BlueOcean 错误。“经典”视图中的控制台输出正确地插入变量。
一种解决方法是使用sh 步骤label
的参数:
def message = 'Hello World'
sh(script: "echo $message", label: message)
我尝试了很多东西,似乎在显示环境变量的那一刻,它使用打印消息而不是文本。
另一种解决方法是将多行字符串拆分为一个数组并对其进行迭代:-
String[] splitData = MULTI_LINE_STRING.split("\n");
for (String eachSplit : splitData) {
print(eachSplit);
}