41

我正在尝试与 Hudson 和 MSTest 进行持续集成。

当我尝试运行此作业时,出现以下错误:

1 Warnung(en)
    0 Fehler

Verstrichene Zeit 00:00:00.13
[workspace] $ sh -xe C:\Windows\TEMP\hudson4419897732634199534.sh
The system cannot find the file specified
FATAL: Befehlsausführung fehlgeschlagen
java.io.IOException: Cannot run program "sh" (in directory "C:\Users\Markus\.hudson\jobs\Test1 Unit TEst\workspace"): CreateProcess error=2, Das System kann die angegebene Datei nicht finden
    at java.lang.ProcessBuilder.start(Unknown Source)
    at hudson.Proc$LocalProc.<init>(Proc.java:187)
    at hudson.Proc$LocalProc.<init>(Proc.java:157)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:649)
    at hudson.Launcher$ProcStarter.start(Launcher.java:266)
    at hudson.Launcher$ProcStarter.join(Launcher.java:273)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:79)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:54)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:34)
    at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:646)
    at hudson.model.Build$RunnerImpl.build(Build.java:181)
    at hudson.model.Build$RunnerImpl.doRun(Build.java:136)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:434)
    at hudson.model.Run.run(Run.java:1390)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:40)
    at hudson.model.ResourceController.execute(ResourceController.java:81)
    at hudson.model.Executor.run(Executor.java:137)
Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht finden
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 17 more
Processing tests results in file results.trx
FATAL: No MSTest TRX test report files were found. Configuration error?
[DEBUG] Skipping watched dependency update for build: Test1 Unit TEst #5 due to result: FAILURE
Finished: FAILURE

我的配置如下所示:

Buildverfahren
Build a Visual Studio project or solution using MSBuild
    MSBuild Version MS Build .NET 4 
    MSBuild Build File  trunk\UnitTestWithNHibernate\UnitTestWithNHibernate.sln 
    Command Line Arguments  /p:Configuration=Release

我的命令行如下所示:

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"
/runconfig: trunk\UnitTestWithNHibernate\UnitTest\LocalTestRun.testrunconfig  /testcontainer: trunk\UnitTestWithNHibernate\UnitTest\bin\Debug\UnitTest.dll /resultsfile:results.trx
4

6 回答 6

100

如果您将 Windows 命令指定为“执行 shell”而不是“执行 Windows 批处理命令”,则会发生这种情况。

于 2013-08-28T09:53:08.507 回答
38

发生这种情况是因为 Jenkins 不知道 shell 路径。
在 Manage Jenkins -> Configure System -> Shell 中,将 shell 路径设置为

C:\Windows\system32\cmd.exe

于 2014-05-13T14:38:37.077 回答
10

在我的情况下,在进行系统重新启动和迁移之前,构建使用“执行 shell”工作并给出了Cannot run program "sh"之后。问题是系统路径意外变短。目前尚不清楚为什么,但是路径丢失C:\Program Files (x86)\Git\bin并且我使用的 Git 版本带有sh.exe.

当然,您可以按照@funkybro 的建议在所有作业中将所有“执行 shell”构建步骤更改为“执行 Windows 批处理命令”。如果您的工作可以在 Windows 系统或 Linux 上运行,并且出于其他原因同时拥有这两个系统,这并不能解决您的问题。

或者,您可以更改此设置以cmd.exe按照@ajith 的建议使用:Manage Jenkins -> Configure System -> Shell -> Shell executable =C:\Windows\system32\cmd.exe

但是,我喜欢使用 linux 命令并使用更类似于 Bash 的东西。这是我自己的偏好,但我认为这也可能会有所帮助。从头开始,我使用Chocolatey NuGet安装 Git。我还推荐 GnuWin 为您提供一些非常有用的 Unix 命令。

然后,您可以使用 Windows UI 通过添加C:\Program Files (x86)\Git\bin\到系统路径来解决此问题。

或者您可以在 Jenkins 全局配置中修复它:管理 Jenkins -> 配置系统 -> 外壳 -> 外壳可执行文件 =C:\Program Files (x86)\Git\bin\sh.exe

于 2014-07-15T15:15:31.430 回答
2

解决问题的方法是将 的值C:\Windows\system32\cmd.exe 放入 Hudson 系统配置中的“Shell 可执行文件”配置中。

在您的工作的构建部分,您可以在编译项目 EX 后执行 windows 命令:

copy target\pmd-rules-extensions-0.0.1-SNAPSHOT.jar D:\projects\sonar\sonar-3.4.1\extensions\rules\pmd\
于 2014-10-24T07:57:12.660 回答
2

这个问题将通过尝试这个命令让 jenkins 作业运行来解决对我来说它工作,只需尝试在管理 jenkins --> 配置系统 --> 搜索 shell --> 和 shell 可执行文件中更新它,给出以下命令. 它有助于!!!

C:\Program Files\Git\bin\sh.exe

于 2020-05-02T16:12:31.210 回答
0

只需使用“windows 批处理命令”并输入 windows 命令,就像在命令行上键入它们一样。

于 2020-10-06T10:06:01.843 回答