【问题标题】:How to suppress source script lines echo in jenkins pipeline console output?如何在詹金斯管道控制台输出中抑制源脚本行回显?
【发布时间】:2016-04-29 21:16:02
【问题描述】:

我正在 Jenkins 中编写一个管道作业,它在管道控制台输出中显示下游作业的输出控制台。到目前为止,该作业正在运行,但由于管道作业本身添加到输出中的所有回声线,输出真的很难读取。

Started by user john.doe@cdf.com
[Pipeline] Allocate node : Start
Running on swqa-pr-prod-slave-1 in /srv/jenkins-slave/workspace/UUT Automated Regression - 1.20
[Pipeline] node {
[Pipeline] echo

[Pipeline] echo
/////////////////////////////////////////////////
[Pipeline] echo
                Start Execution                  
[Pipeline] echo
/////////////////////////////////////////////////
[Pipeline] echo

[Pipeline] echo

[Pipeline] [monitor] echo
[monitor] [EnvInject] - Loading node environment variables.
[Pipeline] [monitor] echo
[monitor] Building remotely on swqa-pr-prod-slave-1 (pr-prod-linux-slaves) in workspace /srv/jenkins-slave/workspace/Process Map Components Lock Down - 1.00
[Pipeline] [monitor] echo
[monitor] [EnvInject] - Injecting environment variables from a build step.
[Pipeline] [monitor] echo
[monitor] [EnvInject] - Injecting as environment variables the properties content 
[Pipeline] [monitor] echo
[monitor] componentsLockDownScript=RegressionComponentsLockDown.py
[Pipeline] [monitor] echo
[monitor] modifyProcessMapXmlScript=ModifyXmlDom-1.20.py
[Pipeline] [monitor] echo
[monitor] uutAndNodePropertiesFile=DL380G8PR2-NodeData-(203).properties
[Pipeline] [monitor] echo
[monitor] 
[Pipeline] [monitor] echo
[monitor] [EnvInject] - Variables injected successfully.

管道插件、Groovy 或 Jenkins 中是否有选项、配置、命令或任何内容允许我抑制所有额外的“回声”以使控制台输出更具可读性?

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline


    【解决方案1】:

    你真正要找的是JENKINS-26124。显然您对此有某种解决方法,但其实现存在缺陷,我们在问题中看不到。

    【讨论】:

      【解决方案2】:

      一个专门针对您的示例的部分解决方法

      /////////////////////////////////////////////////
                      Start Execution                  
      /////////////////////////////////////////////////
      

      您尝试实现的块是在多行上使用单个 echo 调用

      '''triple single quoted string'''(也可以包括内插字符串)。

      来自http://docs.groovy-lang.org/latest/html/documentation/#_triple_single_quoted_string

      三重单引号字符串是多行的。您可以跨越行边界跨越字符串的内容,而无需将字符串分成几部分,无需连接或换行符:

      【讨论】:

        【解决方案3】:

        你需要通过詹金斯来做吗?如果没有,你可以直接从控制台 grep 出来(假设你在 linux 控制台上得到输出):

        cat YOUR_EXAMPLE_OUTPUT.txt | grep -v '\[Pipeline\]\|\[monitor\]\|^$' 
        

        那只会省略:

        Started by user john.doe@cdf.com
        Running on swqa-pr-prod-slave-1 in /srv/jenkins-slave/workspace/UUT Automated Regression - 1.20
        
        /////////////////////////////////////////////////
                        Start Execution                  
        /////////////////////////////////////////////////
        

        更新: 如果您希望它“实时”运行,请按照您的输出并将其通过管道传输到缓冲的 grep 行中:

        tail -f YOUR_EXAMPLE_OUTPUT.txt | grep -v '\[Pipeline\]\|\[monitor\]\|^$' --line-buffered
        

        【讨论】:

        • 是的,我想要的是消除输出控制台中产生的额外行,我不想等到工作完成后再处理/清理输出。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多