如何进入哈德逊"console output"?



我有一个在Hudson构建系统下运行的构建bash脚本,它编写自己的日志文件。但是,Hudson捕获它执行的构建脚本的所有stdout和stderr,并将其显示为构建的"控制台输出"。此外,此输出保存在构建历史记录中。

如何从脚本本身访问此"控制台输出"?我想1)将它与工件一起保存为日志;2) 将其附加到通知电子邮件中。感谢

  1. 它与工件(构建目录顶层的log文件,即jobs/jobname/builds/buildid/log)一起保存
  2. 它会自动添加到hudson发送的电子邮件中,尽管从一开始就被截断了

如果你需要在其他地方购买,有两种选择:

  1. 您可能需要将脚本封装在一个块中,并通过tee将其输出管道化。所以你应该转换:

    #!/bin/sh
    make this
    make that
    

    至:

    #!/bin/bash
    {
        make this
        make that
    } 2>&1 | tee output
    # Now the output is in file 'output' while Hudson did see it.
    

    不幸的是,我不知道如何在tee中强制行缓冲,所以实时日志打印在Hudson中工作(至少我的cygwin版本没有提到-u选项)。

  2. 您可以使用Groovy插件和/或Groovy Postbuild插件来访问内部API。构建步骤中的"系统"groovy脚本和构建后的groovy剧本都可以访问hudson.model.AbstractBuild类型的构建对象(尽管方式略有不同),从中可以使用hudson.model。Run#getLog(int)方法获取控制台的内容。

要在tee中强制行缓冲,只需使用expect包中的unbuffer {command}启动程序即可。unbuffer的另一个替代方案是使用stdbuf -eL -oL {command}

最新更新