将共享库中的日志传播到jenkins作业控制台

时间:2017-11-16 02:09:36

标签: jenkins-pipeline jenkins-groovy

我正在尝试编写一个共享库,它结合了全局变量和共享函数来执行项目构建和部署的自动化任务

项目布局如下:

enter image description here

该项目有两个主要部分:

  1. 放置在vars文件夹中的全局共享变量

  2. 支持groovy脚本来抽象逻辑,而逻辑又将在全局变量中调用。

  3. enter image description here

    在groovy类中,我使用 println 来记录调试信息

    enter image description here

    但是当它通过jenkins管道工作

    调用时,它永远不会打印出来

    enter image description here

    jenkins作业的日志控制台如下:

    enter image description here

    有人可以告诉我如何将日志从groovy类提升到jenkins作业控制台,因为我只能在日志控制台中看到全局共享脚本中的 println 日志。

3 个答案:

答案 0 :(得分:2)

我刚刚通过调用jenkins工作中提供的 println 步骤找到了一种方法

基本上我在Groovy类 PhoenixEurekaService 中创建一个包装函数,如下所示:

enter image description here

这些步骤实际上是通过构造函数传递到Groovy类的jenkins作业环境。通过这种方式,我们可以在Groovy类中调用jenkins作业中的任何可用步骤。

enter image description here

在全球groovy脚本中 PhoenixLib.groovy

enter image description here

我不确定是否有其他方法可以做到这一点......

答案 1 :(得分:0)

我不是100%肯定你是否正在寻找,但是通过传递步骤并使用echo可以在共享库中打印东西。请参阅https://jenkins.io/doc/book/pipeline/shared-libraries/

中的访问步骤

答案 2 :(得分:0)

无法从共享库访问所有命令/ DSL,例如:println,sh,bat,checkout等。 参考:https://jenkins.io/doc/book/pipeline/shared-libraries/

您可以通过将步骤传递到共享库来访问步骤。

//your library
package org.foo
class Utilities implements Serializable {
  def steps
  Utilities(steps) {this.steps = steps}
  def mvn(args) {
    steps.println "Hello world"
    steps.echo "Hello echo"
    //steps.sh "${steps.tool 'Maven'}/bin/mvn -o ${args}"
  }
} 

jenkinsfile

@Library('utils') import org.foo.Utilities
def utils = new Utilities(this)
node {
  utils.mvn '!!! so this how println can be worked out or any other step!!'
}