2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Jenkinsでシェルスクリプト実行失敗時の対処方法:java.io.IOException: Cannot run program "sh"

Last updated at Posted at 2023-08-31

課題

Jenkinsの初心者ですが、
以下サイトを見てJenkinsでジョブを作り、Build Stepsシェルの実行を試したところ、、、

このエラーで躓いてました。。。

Running as SYSTEM
ビルドします。 ワークスペース: C:\ProgramData\Jenkins\.jenkins\workspace\test
[test] $ sh -xe C:\Windows\TEMP\jenkins15041529600795810946.sh
指定されたファイルが見つかりません。
FATAL: コマンドの実行に失敗しました
java.io.IOException: CreateProcess error=2, 指定されたファイルが見つかりません。
	at java.base/java.lang.ProcessImpl.create(Native Method)
	at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:499)
	at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:158)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
Caused: java.io.IOException: Cannot run program "sh" (in directory "C:\ProgramData\Jenkins\.jenkins\workspace\test"): CreateProcess error=2, 指定されたファイルが見つかりません。
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
	at hudson.Proc$LocalProc.<init>(Proc.java:252)
	at hudson.Proc$LocalProc.<init>(Proc.java:221)
	at hudson.Launcher$LocalLauncher.launch(Launcher.java:994)
	at hudson.Launcher$ProcStarter.start(Launcher.java:506)
	at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:144)
	at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:92)
	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818)
	at hudson.model.Build$BuildExecution.build(Build.java:199)
	at hudson.model.Build$BuildExecution.doRun(Build.java:164)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:526)
	at hudson.model.Run.execute(Run.java:1895)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)
	at hudson.model.ResourceController.execute(ResourceController.java:101)
	at hudson.model.Executor.run(Executor.java:442)
Build step 'シェルの実行' marked build as failure
Finished: FAILURE

前提

・Javaインストール済み(Jenkinsは11以上しかだめらしい)
・Jenkinsインストール済み
・Jenkins初期設定済み
・上のサイトに従いジョブを作成

環境

$ java -version
java version "17.0.8" 2023-07-18 LTS

対処方法

以下記事を参考にし、うまく解決できた!!

①ダッシュボード左のJenkinsの管理を押下

image.png

②System ConfigurationのSystemを押下

image.png

③シェル実行ファイルを設定

ネットで「Windows シェルを実行」を検索すると、linux機能の有効化やUbuntuのインストールなどを誘導するサイトが多いですが。。。(それは間違ってないよ)

ただ、今回の事象は、実はwindows内蔵のcmdでシェルを実行できるよ!

初めてJenkinsをインストールするとき、シェル実行ファイルの設定が空欄になっている人が多いようで、
image.png

以下のパスを設定してください!

C:\Windows\system32\cmd.exe

※補足
デフォルトでcmdの居場所はここですが、場所が違ったりする人は適宜変更してください~

④再実行するとうまく行った!

どうやら、シェルスクリプトが実行できない原因は、windowsでの実行場所を教えてあげてないようでした。。。

上記のようにcmdの居場所を設定したら実行できるようになった!

image.png

終わりに

今回はJenkinsのついでに、シェル実行時に裏でwindowsがどう動いてるか勉強できた!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?