詹金斯的工作没有看到控制台输出

时间:2016-04-11 19:04:36

标签: shell jenkins build

首先,我不是管理员,所以可能会有配置方面的内容不正确,导致此问题。我可以配置我有权访问配置的一个作业,这就是全部。

我正在使用shell脚本(使用git-bash.exe)和Windows批处理文件的组合执行Windows构建。唯一的jenkins构建脚本是一个仅包含:

的shell脚本
#!c:\Program Files\Git\git-bash.exe
$WORKSPACE/builds/step1.sh |& tee $WORKSPACE/build_output.log

(我的git-bash.exe版本是' 4.3.42(5)-release' |&简写似乎和2>&1 |一样有效。)

该脚本(step1.sh)执行一些准备工作,然后通过依次调用批处理文件和shell脚本来启动构建过程。

构建工作正常,我获得了一个很好的MSI文件。 build_output.log文件包含整个构建过程的完整日志,也显示在从属服务器的控制台中。

问题是,jenkins无法捕获该控制台输出(即build_output.log的内容)。我在控制台输出中看到的只有:

Started by user Jon
[EnvInject] - Loading node environment variables.
Building remotely on Win2k12r2_x64-build (Build VM (xx.xx.xx.xx) Windows Client) in workspace /f/git/project
[project] $ c:\Program Files\Git\git-bash.exe C:\Users\ADMINI~1\AppData\Local\Temp\1\hudson386179994146389782.sh
Notifying upstream projects of job completion
Finished: SUCCESS

在jenkins中捕获构建日志需要做什么?我特别不想把我的step1.sh脚本放到jenkins中,因为我希望能够准确地重现构建团队(管理jenkins服务器)看到构建失败的时间。我们希望构建脚本在源代码控制之下,所有人都可以使用并且可以运行(在他们自己的沙箱中)。我确实尝试过简单地从jenkins两行shell脚本中获取构建日志,看看是否捕获了它......它没有。

1 个答案:

答案 0 :(得分:1)

我在詹金斯使用过类似的命令开发日志:

./foo.sh 2>&1 | tee output.txt

(我使用的Jenkins服务器上的git-bash.exe版本不支持|&,因此我必须使用长格式重定向stderr。)

在您的情况下,如果控制台日志或build_output.log都没有包含任何文字,我猜测它是以下之一:

  1. step1.sh实际上并未输出任何内容

    疑难解答:在Jenkins中运行该脚本而不进行任何重定向或tee,并验证它是否会向控制台输出内容。如果Jenkins环境中的某些内容(例如Jenkins插件)导致问题,请不要只依赖本地运行。

  2. |&无声地失败

    疑难解答:将您的作业配置为运行echo foo>&2 |& cat,并验证您是否看到" foo"在你的控制台中。如果失败,请尝试使用长格式:echo foo>&2 2>&1 | cat

  3. tee无声地失败

    疑难解答:将您的作业配置为运行echo foo>&2 |& tee out.txt,并验证您是否看到" foo"在您的控制台和out.txt中。如果失败,请尝试使用长格式:echo foo>&2 2>&1 | tee out.txt