Jenkinsでコマンドシェルを実行しようとしています。Windows7で作業しています。コンソール出力には次のように表示されます。
Building in workspace C:\Program Files (x86)\Jenkins\workspace\test
[test] $ sh -xe C:\Windows\TEMP\hudson6299483223982766034.sh
The system cannot find the file specified
FATAL: L'exécution de la commande a échoué.
Java.io.IOException: Cannot run program "sh" (in directory "C:\Program Files (x86)\Jenkins\workspace\test"): CreateProcess error=2, Le fichier spécifié est introuvable
at Java.lang.ProcessBuilder.start(Unknown Source)
at hudson.Proc$LocalProc.<init>(Proc.Java:244)
at hudson.Proc$LocalProc.<init>(Proc.Java:216)
at hudson.Launcher$LocalLauncher.launch(Launcher.Java:816)
at hudson.Launcher$ProcStarter.start(Launcher.Java:382)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.Java:97)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.Java:66)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.Java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.Java:779)
at hudson.model.Build$BuildExecution.build(Build.Java:205)
at hudson.model.Build$BuildExecution.doRun(Build.Java:162)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:537)
at hudson.model.Run.execute(Run.Java:1744)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:43)
at hudson.model.ResourceController.execute(ResourceController.Java:98)
at hudson.model.Executor.run(Executor.Java:374)
Caused by: Java.io.IOException: CreateProcess error=2, Le fichier spécifié est introuvable
at Java.lang.ProcessImpl.create(Native Method)
at Java.lang.ProcessImpl.<init>(Unknown Source)
at Java.lang.ProcessImpl.start(Unknown Source)
... 16 more
Build step 'Exécuter un script Shell' marked build as failure
[BFA] Scanning build for known causes...
[BFA] No failure causes found
[BFA] Done. 0s
Finished: FAILURE
何か案が?
Windowsスレーブの場合は、Execute Windows batch command
を使用してください。
LinuxやMacなどのUnixライクなスレーブの場合、Execute Shell
がオプションです。
私の知る限り、Windowsはそのままではシェルスクリプトをサポートしません。 CygwinまたはGit for Windowsをインストールし、[Jenkinsの管理]> [システムシェルの構成]に移動して、インストールで見つかったsh.exeファイルの場所を指定できます。例えば:
C:\Program Files\Git\bin\sh.exe
私が発見した別のオプションがあります。これは、単純なsh "something"
を使用してパイプラインスクリプトでシェルを使用できるため、より優れています。
フォルダーをシステムPATHに追加します。 [コンピューター]を右クリックし、[プロパティ]> [システムの詳細設定]> [環境変数]をクリックして、システムパスプロパティにC:\Program Files\Git\bin\
を追加します。
重要な注意:何らかの理由で、Jenkinsがこのユーザーで実行されていても、システム全体のPathに追加する必要があり、ユーザーPathへの追加は機能しませんでした。
重要な注意(バグ修正者に感謝!):
これは動作します。新しいPATH変数を取得するには、Jenkinsを再起動する必要があることに注意してください。私はちょうど私のサービスに行き、そこからそれを書き直した。
免責事項:英語版のWindowsを使用していないため、名前が若干異なる場合があります。
エラーは、スクリプトが存在しないことを示しています
ファイルが存在しません。完全なパスを確認してください
C:\Windows\TEMP\hudson6299483223982766034.sh
The system cannot find the file specified
さらに、.shスクリプトをWindowsで起動するには、パスに [〜#〜] cygwin [〜#〜] がインストールされ、適切に構成されている必要があります。
スクリプトが存在することを確認します。
Jenkinsスクリプトに、次の手順を実行して、ファイルがあることを確認します
cd C:\Windows\TEMP\
ls -rtl
sh -xe hudson6299483223982766034.sh
これは、ジェンキンスがシェルパスを認識していないために発生します。 Jenkinsの管理->システムの構成->シェルで、シェルパスを
[Jenkins]-> [Jenkinsの管理]-> [システムの設定]-> [グローバルプロパティ]ボックスの[環境変数]をオンにして、Java_HOMEパス= "C:\ Program Files\Java\jdk-10.0.1"を追加します。
*最後にビンを書き込まないでください