为什么 Jenkins 在执行外部 windows 命令行后失败?
Why Jenkins is failing after executing an external windows command line?
我必须在我的本地 Jenkins 安装中创建一个作业,它执行 SonarQube 分析,然后调用一个命令行程序来搜索重复的代码行。但是,当我执行后一个命令 (cpd) 时,它运行正常,因为它在外部文件中正确输出,但 Jenkins 仍然指出它是这样的错误:
E:\BASE_DIR>cpd --minimum-tokens 100 --files "E:\BASE_DIR\Project_Folder" --language java 1>>"E:\BASE_DIR\Project_Folder\CPD_CLIG.txt"
Build step 'Execute shell' marked build as failure
Finished: FAILURE
我试图创建另一个调用该命令的脚本,但我得到了相同的结果。
关于如何处理这个问题有什么建议吗?任何解决方法都会非常有帮助。
对您的问题的简单而简短的回答是
请将以下行添加到您的 "Execute shell" 构建步骤中。
"#!/bin/sh"
现在让我向您解释为什么我们需要这一行来进行 "Execute Shell" 构建作业。
默认情况下,Jenkins 采用“/bin/sh -xe”,这意味着 -x 将打印每个 command.And 另一个选项 -e,这会导致 shell 停止 运行 当任何命令以非零(当任何命令失败时)退出代码退出时立即执行脚本。
因此,通过添加“#!/bin/sh”,您可以在没有选项的情况下执行。
请参考:How/When does Execute Shell mark a build as failure in Jenkins?
我没有找到适合我的问题的解决方案,但我意识到我可以使用 Jenkins 插件进行静态代码分析(DRY 插件和 PMD 插件)来解决我的问题。
谢谢大家
我必须在我的本地 Jenkins 安装中创建一个作业,它执行 SonarQube 分析,然后调用一个命令行程序来搜索重复的代码行。但是,当我执行后一个命令 (cpd) 时,它运行正常,因为它在外部文件中正确输出,但 Jenkins 仍然指出它是这样的错误:
E:\BASE_DIR>cpd --minimum-tokens 100 --files "E:\BASE_DIR\Project_Folder" --language java 1>>"E:\BASE_DIR\Project_Folder\CPD_CLIG.txt"
Build step 'Execute shell' marked build as failure
Finished: FAILURE
我试图创建另一个调用该命令的脚本,但我得到了相同的结果。
关于如何处理这个问题有什么建议吗?任何解决方法都会非常有帮助。
对您的问题的简单而简短的回答是
请将以下行添加到您的 "Execute shell" 构建步骤中。
"#!/bin/sh"
现在让我向您解释为什么我们需要这一行来进行 "Execute Shell" 构建作业。
默认情况下,Jenkins 采用“/bin/sh -xe”,这意味着 -x 将打印每个 command.And 另一个选项 -e,这会导致 shell 停止 运行 当任何命令以非零(当任何命令失败时)退出代码退出时立即执行脚本。
因此,通过添加“#!/bin/sh”,您可以在没有选项的情况下执行。
请参考:How/When does Execute Shell mark a build as failure in Jenkins?
我没有找到适合我的问题的解决方案,但我意识到我可以使用 Jenkins 插件进行静态代码分析(DRY 插件和 PMD 插件)来解决我的问题。
谢谢大家