Hey,
I have a problem:
When I create a project and click on “Build” and select Execute shell and build the project-
I got an error in the console output:
Started by user Rachel Cohen
Running as SYSTEM
Building in workspace C:\ProgramData\Jenkins\.jenkins\workspace\test_again
[test_again] $ sh -xe C:\WINDOWS\TEMP\jenkins1793137690508028130.sh
The system cannot find the file specified
FATAL: command execution failed
java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
Caused: java.io.IOException: Cannot run program "sh" (in directory "C:\ProgramData\Jenkins\.jenkins\workspace\test_again"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at hudson.Proc$LocalProc.<init>(Proc.java:254)
at hudson.Proc$LocalProc.<init>(Proc.java:223)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:997)
at hudson.Launcher$ProcStarter.start(Launcher.java:509)
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:814)
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:522)
at hudson.model.Run.execute(Run.java:1896)
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 'Execute shell' marked build as failure
Finished: FAILURE
The system cannot find the file specified FATAL: command execution failed
If anyone knows what the problem is- it’ll help me a lot
thank you!
Rachel
That looks like you’re trying to run a ‘shell’ step on a windows node, which is unlikely to succeed, unless you have a specific shell executable installed there (in which case, it needs to be in the %PATH% of the node.
For windows nodes, you’d generally be looking at running either ‘bat’ or powershell steps for scripts.
It happens because Jenkins is not aware about the shell path.
In my case the solution was:
In Manage Jenkins → Configure System → Shell, set the shell path as
C:\Windows\system32\cmd.exe
After doing this change, it works for me.
Hope it helps!
Changing Execute shell to use the Windows command processor seems counter-intuitive to me. Wouldn’t it be better to use the “Execute batch command” step instead of “Execute shell”? The “Execute shell” step is generally used for programs that are POSIX compatible shells.
This worked for me. I was skeptical about adding the SSH plugin due to issues relating to ‘CSRF vulnerability and missing permission checks in SSH Plugin allow capturing credentials’ and ‘Missing permission check in SSH Plugin allows enumerating credentials IDs’
As far as I know, there is nothing in the ssh plugin that will allow a shell step (“sh”) to run on Windows computers. I’m surprised that installing the ssh plugin made any change to how Pipeline steps execute on Windows agents.
Windows agents almost always use “bat” and “powershell” steps to perform their operations. Some users may have found ways to configure their Windows computers to also include a program that is compatible with “sh” and runs on Windows, but that is not the typical way that Windows agents are used.
Please stop trying to use “Execute shell” on a Windows agent. “Execute shell” is used for Unix agents like Linux, macOS, FreeBSD, OpenBSD, and Solaris.
Please use the bat or powershell steps on Windows agents.