从Jenkinsfile写日志

pag*_*gid 8 groovy jenkins jenkins-pipeline

在创建应该在管道中使用的Jenkins管道或库时,通常很难使用提供的日志记录选项来调试代码.目前我用这个记录:

node {
  ...
  sh "echo ${thingtoshow}"
}
Run Code Online (Sandbox Code Playgroud)

缺点是它在Groovy/Java特定细节方面不是很强大 - 例如它不允许我立即转储对象的内容

它会在实际日志中造成混乱:

[Pipeline] sh
[workspace] Running shell script
+ echo 'things'
things
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能在Jenkins控制台中编写日志以获得一行日志输出?


编辑:尽管代码示例没有显示它,但这在为Jenkins管道开发共享Groovy库时特别有用

Jon*_*n S 15

你可以使用echo舞台:

node {
  echo "qwerty"
}
Run Code Online (Sandbox Code Playgroud)

它导致两行:

[Pipeline] echo
qwerty
Run Code Online (Sandbox Code Playgroud)

不幸的是它产生两条线,但据我所知,这是最短的形式.

  • 啊哈,好吧,使用`print`代替它,它使用你发送的对象的`toString()`.不是100%肯定这里发生了什么,但它的工作方式与`echo`完全相同,但处理对象. (4认同)

mod*_*e13 9

您还可以调用核心 Java 的 Logger。

import java.util.logging.Logger

Logger logger = Logger.getLogger('org.example.jobdsl')
logger.info('Hello from a Job DSL script!')
Run Code Online (Sandbox Code Playgroud)

以上将为您提供如下条目http://yourjenkinsurl/log/all

Jan 22, 2018 3:27:58 PM INFO org.codehaus.groovy.reflection.CachedMethod invoke
Hello from a Job DSL script!
Run Code Online (Sandbox Code Playgroud)