Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何进入哈德逊&x27;s";控制台输出;?_Linux_Shell_Continuous Integration_Hudson_Build Automation - Fatal编程技术网

Linux 如何进入哈德逊&x27;s";控制台输出;?

Linux 如何进入哈德逊&x27;s";控制台输出;?,linux,shell,continuous-integration,hudson,build-automation,Linux,Shell,Continuous Integration,Hudson,Build Automation,我在Hudson build系统下运行了一个build bash脚本,它编写自己的日志文件。但是,Hudson捕获它执行的构建脚本的所有stdout和stderr,并将其显示为构建的“控制台输出”。此外,此输出保存在生成历史记录中 如何从脚本本身访问此“控制台输出”?我想1)将其与工件一起保存为日志;2) 将其附加到通知电子邮件。谢谢 它与工件一起保存(构建的顶级目录中的log文件,即jobs/jobname/builds/buildid/log) 它会自动添加到hudson发送的电子邮件中,尽

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

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

  • 它与工件一起保存(构建的顶级目录中的
    log
    文件,即
    jobs/
    jobname
    /builds/
    buildid
    /log
  • 它会自动添加到hudson发送的电子邮件中,尽管从一开始就被截断了
  • 如果您需要在其他任何地方获得它,有两种选择:

  • 您可以将脚本包装在块中,并通过T形三通将其输出。所以你要转换:

    #!/bin/sh
    make this
    make that
    
    致:

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

  • 您可以使用和/或访问内部API。构建步骤中的“系统”groovy脚本和构建后的groovy脚本都可以访问类型为的构建对象(尽管方式略有不同),从中可以使用该方法获取控制台的内容


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

    谢谢!这正是我们现在所做的(使用
    tee
    ),但我想从框架本身获得它。简化的另一个好处是,Hudson的日志将包含脚本本身的错误。由于一些我不清楚的原因,我们并没有使用哈德逊的任何功能,比如电子邮件通知——这一切都是从计算机上手动完成的script@davka:自从我写了答案,我开始使用Groovy和Groovy后期构建插件,因此,我添加了如何从这些文件访问日志的说明。环境变量:BUILD_URL可以找到此生成结果的URL(例如)
    #!/bin/bash
    {
        make this
        make that
    } 2>&1 | tee output
    # Now the output is in file 'output' while Hudson did see it.