Shell Jenkins作业没有看到控制台输出

Shell Jenkins作业没有看到控制台输出,shell,jenkins,build,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 (我的

首先,我不是管理员,所以可能有一些配置方面的错误,导致了这个问题。我可以配置一个我有权配置的作业,仅此而已

我正在使用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)-发行版',而
|&
速记似乎和
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脚本中搜索构建日志,看看它是否捕获了它。。。事实并非如此。

我在Jenkins中使用了类似的命令来创建日志:

./foo.sh 2>&1 | tee output.txt
(我使用的Jenkins服务器上的
git bash.exe
版本不支持
|&
,因此我不得不使用长表单重定向stderr。)

在您的情况下,如果console日志或
build\u output.log
都不包含任何文本,我猜它是以下之一:

  • step1.sh
    实际上没有输出任何内容

    疑难解答:在Jenkins中运行该脚本,无需任何重定向或
    tee
    ,并验证它是否将内容打印到控制台。不要只依赖本地运行,以防Jenkins环境中的某些东西(如Jenkins插件)导致问题

  • |&
    正在悄无声息地失败

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

  • tee
    正在无声地失败

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


  • 奇怪的是,
    echo foo>&2…
    不起作用(tee没有得到输出),但是删除“>&2”允许它(您要求我尝试的测试)继续进行。我在从机和日志的控制台窗口中看到“foo”,但在jenkins服务器的控制台输出中没有看到。在从机上运行一个简单的脚本“bob.sh”也不会,它只包含
    #/bin/sh.exe ^Mecho foo
    -我在从机控制台窗口中看到输出,该窗口会短暂弹出并显示在输出日志文件中,但在jenkins服务器上看不到。我最初的构建脚本输出到从属服务器和日志文件,但jenkins中没有捕获任何内容。您说您看到“控制台窗口短暂弹出”。您是否正在
    sh
    脚本中生成新的控制台窗口?如果是这样,那可能是你的问题。可以发布脚本示例吗?不,step1.sh将“调用”批处理文件或执行shell脚本,所有这些都在运行step1.sh的控制台窗口的上下文中。