2013-02-28 87 views
28

HudsonとMSTestとの継続的な統合を試みています。Windows上のHudson - エラー:java.io.IOException:プログラム "sh"を実行できません。

私はこの仕事を実行しようとすると、私は次のエラーを取得する:

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 

私の設定は次のようになります。

"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 
+1

が問題を発見します。シェルをC \ windows \ system32 \ cmdに指定する必要がありました。exe –

+1

あなた自身の質問にお答えください。将来的に他の人を助けることができるので、すでに解決済みであることを知るためにあなたの全体の質問を読むことはありません。 – Jim

答えて

62

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 

私のコマンドラインは次のようになります

これは、Windowsコマンドを「Execute Windows batch comm」ではなく「Execute shell」として指定した場合に発生しますそして"。

+5

これはなぜ受け入れられた答えではありませんか? – quantum

25

これは、Jenkinsがシェルのパスを認識していないために発生します。 >設定システム - -
では、ジェンキンス管理>シェルを、システムの再起動や移行を行う前に、「シェルを実行」を使用して働いていたと後にCannot run program "sh"を与えたビルド私の場合は

C:\Windows\system32\cmd.exe

+0

それは 'PATH'からそれを理解してはいけませんか? – Yar

+0

完璧に私のために働いた、ありがとう。 –

6

としてシェルパスを設定します。問題は、システムのパスが予期せず短くなったことでした。理由は分かりませんが、パスはC:\Program Files (x86)\Git\binで、私が使っていたGitのバージョンはsh.exeです。

もちろん、@ funkybroの提案どおりに、すべてのジョブですべての "Execute shell"ビルドステップを "Execute Windows batch command"に変更することができます。これは、WindowsシステムまたはLinux上で実行できるジョブがあり、他の理由で両方のシステムを持っている場合、問題を解決しません。

それとも、あなたは@ajithにより示唆されるようcmd.exeを使用するには、この設定を変更することができます:ジェンキンス管理 - >設定システム - >シェル - >シェルの実行ファイル= C:\Windows\system32\cmd.exe

しかしが、私はLinuxのコマンドを有し、かつ使用して好きBashにもっと似ているもの。それは私自身の好みですが、これも参考になると思いました。最初から私はChocolatey NuGetを使ってGitをインストールしました。また、非常に有用なUnixコマンドのいくつかをGnuWinに提供することをお勧めします。

  • は、CMDまたはPowerShellではChocolatey NuGet
  • をインストールします。cinst gnuwin git

次にあなたがシステムパスにC:\Program Files (x86)\Git\bin\を追加することによって、WindowsのUIを使用してこの問題を解決することができます。

それとも、ジェンキンスグローバル設定でそれを修正することができます: - >設定システム - ジェンキンス管理>シェル - >シェルの実行可能= C:\Program Files (x86)\Git\bin\sh.exe

+2

ありがとう@Nate。私も同じ問題がありました。私のgitのインストールでは\ Git \ cmd \が追加され、\ Git \ binは追加されませんでした。 –

+2

JenkinsがPATHをリロードするようにノードとの接続をリセットする必要もありました。 – Arthur

+2

グローバルなJenkinsの設定でシェルの実行ファイルを指定すると、私のLinuxとOSXのスレーブでもそれを使用しようとしますが、どちらも失敗しますか? Windowsのスレーブのシェル実行ファイルパスを指定する方法はありますか? – Ben

1

問題を修正する方法「シェルにC:\Windows\system32\cmd.exeの値を入れていましたHudson Systemの設定で "実行可能"な設定になっています。

あなたの仕事のビルドセクションでは、あなたが置くことができる窓がプロジェクト EXをコンパイルした後に実行するコマンド:

copy target\pmd-rules-extensions-0.0.1-SNAPSHOT.jar D:\projects\sonar\sonar-3.4.1\extensions\rules\pmd\ 
関連する問題