Jenkins捕获输出的消息

nhjlsmyf  于 2022-10-06  发布在  Jenkins
关注(0)|答案(1)|浏览(194)

我有一条Jenkins管道,我在其中实施了一些阶段。Jenkins在作业运行时输出一些消息。

代码:

stage('My stage') {
  options {
    timeout(time: 2, unit: "MINUTES")
  }
  steps {
    script {
       ./script.sh
      }
    }
  }
}

产出:

...
20:12:40  Timeout set to expire in 2 min 0 sec
[Pipeline] {
[Pipeline] script
[Pipeline] {
20:12:40  ./script.sh                   '                  
20:14:40  Cancelling nested steps due to timeout
20:14:40  Sending interrupt signal to process
20:14:48  ...
20:14:48  + JOB_NAME=...
20:14:48  + BUILD_URL=...
20:14:48  + BUILD_ID=567
20:14:48  + BUILD_RESULT=SUCCESS

在本例中,我正在进行一项工作,并且显示了许多消息。我需要捕获这条消息“由于超时正在取消嵌套步骤”。当Jenkins输出此消息时,我希望能够向用户发送通知。

我不知道该怎么做。

5ssjco0h

5ssjco0h1#

执行script.sh后,您可以查看控制台日志,如下所示。

stage('My stage') {
  options {
    timeout(time: 2, unit: "MINUTES")
  }
  steps {
    script {
       sh "./script.sh"

       // Checking the console log
       def consoleLog = Jenkins.getInstance().getItemByFullName(env.JOB_NAME).getBuildByNumber(Integer.parseInt(env.BUILD_NUMBER)).logFile.text
       if(consoleLog.contains("Cancelling nested steps due to timeout")) {
                 echo "Send the Notification"
         }
      }
    }
  }
}

此外,如果您不想按顺序执行此操作,则可以创建一个并行阶段并继续检查日志。

相关问题