首先,我不是管理员,所以可能会有配置方面的内容不正确,导致此问题。我可以配置我有权访问配置的一个作业,这就是全部。
我正在使用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脚本中获取构建日志,看看是否捕获了它......它没有。
答案 0 :(得分:1)
我在詹金斯使用过类似的命令开发日志:
./foo.sh 2>&1 | tee output.txt
(我使用的Jenkins服务器上的git-bash.exe
版本不支持|&
,因此我必须使用长格式重定向stderr。)
在您的情况下,如果控制台日志或build_output.log
都没有包含任何文字,我猜测它是以下之一:
step1.sh
实际上并未输出任何内容
疑难解答:在Jenkins中运行该脚本而不进行任何重定向或tee
,并验证它是否会向控制台输出内容。如果Jenkins环境中的某些内容(例如Jenkins插件)导致问题,请不要只依赖本地运行。
|&
无声地失败
疑难解答:将您的作业配置为运行echo foo>&2 |& cat
,并验证您是否看到" foo"在你的控制台中。如果失败,请尝试使用长格式:echo foo>&2 2>&1 | cat
。
tee
无声地失败
疑难解答:将您的作业配置为运行echo foo>&2 |& tee out.txt
,并验证您是否看到" foo"在您的控制台和out.txt
中。如果失败,请尝试使用长格式:echo foo>&2 2>&1 | tee out.txt
。