作为一个以前几乎没写过脚本的菜鸟,第一次写jenkinsfile着实有些困难,而且jenkins官方文档中关于语法的介绍特别窄,几乎只是告诉你有这个东西,该怎么用就寥寥几笔,百度上的相关资料也比较少,所以就在这总结一下这次编写jenkinfile中遇到的一些问题和解决办法
第一个: jenkins打印日志的问题
首先我的情况是想尽量将jenkinsfile简化,方便后期维护和增加新节点,所以会把大部分的逻辑都放在shared lib 库中,类似于jenkinsfile为Controller层,而大部分的逻辑都放在了shared lib库中,日志打印也同样是放在shared lib库中。
这个lib库并没有像官方规定的那样去定义,就一个src下包含了一个groovy类,然后该类定义了一些类方法,这些类方法就是我在jenkinsfile中要调用的逻辑接口。
原本调研的是在类方法中直接 print 打印出来的日志会同步打印到jenkins的 console output上,后来发现无效。然后发现jenkinsfile在启动时会创建一个workflowScript对象,pipeline jenkinsfile中的打印(如 print, echo)都是隐式的通过该对象调用(this.echo, this.print),所以为所有的类方法多传了一个workflowScript对象 dls,在Jenkinsfile中传入this,然后在类方法中通过dls.print或dls.echo就能将日志同步打印到console output上了。
shared lib 库中
jenkinsfile中
后来发现通过这种方式打印在jenkins的console output上中文会出现乱码的情况 ,