Reputation: 1109
I have windows 10 and I want to execute the sh command in the Jenkinsfile from Jenkins pipeline using bash for Ubuntu for windows, but it doesn't work
I have the following stage in my Jenkins pipeline :
stage('sh how to') {
steps {
sh 'ls -l'
}
}
The error message is :
[C:\Program Files (x86)\Jenkins\workspace\pipelineascode] Running shell script Cannot run program "nohup" (in directory "C:\Program Files (x86)\Jenkins\workspace\pipelineascode"): CreateProcess error=2, Le fichier spécifié est introuvable
I tried changing Jenkins parameter->shell executable with
C:\Windows\System32\bash.exe
but same error...
how to run sh script using windows 10's bash?
Upvotes: 73
Views: 116320
Reputation: 39
I was getting the same error below solutions worked for me..
Install git-bash
for windows use "bat" instead of "sh"
set "C:\Program Files\Git\usr\bin" to PATH(user variable)
Upvotes: 3
Reputation: 59
sh is not windows command. The simple way to enable the use of 'sh' command in windows is to install GIT BASH
Once you install GIT BASH, then you need to set below environment variables path.
By setting above configuration you will be able to execute 'sh' command in Jenkinsfiles on Jenkins installed on windows machine.
Upvotes: 2
Reputation: 51
I got the above issue in windows 10 and just added the path "C:\Program Files\Git\usr\bin" to the system variables then it started working.
Upvotes: 0
Reputation: 2440
Windows doesn't understand the "sh" command. To enable this, add
C:\Program Files\Git\bin &
C:\Program Files\Git\usr\bin
to the System Environment variable PATH, than restart your system.
Than execute your command in jenkins, it will work.
Upvotes: 7
Reputation: 77
In my case I replaced 'sh' by 'bat' in Pipeline script and worked.
Upvotes: 5
Reputation: 43
So you want the job running under WSL. If you want all jobs running under WSL have you considered installing Jenkins under WSL? Then everything is already in GNU land and you don't have to bridge the envrionment/culture of windows to GNU from within your Jenkins configuration.
Upvotes: 0
Reputation: 141
My observation is that the agent seems to be trying to run nohup in the context where the agent.jar is run, not in the container. It didn't matter what I put in the container, the error message was the same. By putting nohup and sh in the PATH where the jenkins agent is running, I see a change in behavior.
git config core.sparsecheckout # timeout=10 git checkout -f c64c7bf905b6a4f5a8f85eb23bbd108f4c805386 sh: /home/jenkins/workspace/projname/simple_docker@tmp/durable-9fedc317/jenkins-log.txt: No such file or directory sh: /home/jenkins/workspace/projname/simple_docker@tmp/durable-9fedc317/jenkins-result.txt.tmp: No such file or directory mv: cannot stat '/home/jenkins/workspace/projname/simple_docker@tmp/durable-9fedc317/jenkins-result.txt.tmp': No such file or directory
I am seeing a folder /home/jenkins/workspace/projname/simple_docker@tmp/durable-9fedc317 which contains a file "script.sh" with the contents "docker inspect -f . repositoryname:tagname"
When this docker command is run manually on the command line, it always produces a single line of output consisting of a single period character. I have no doubt this is not what the jenkins system is looking for.
Upvotes: 0
Reputation: 788
If you are executing on Windows, just change sh to bat. it will work as expected. Example:
pipeline { agent any stages { stage ('Compile Stage') {
steps {
withMaven(maven : 'apache-maven-3.6.1') {
bat'mvn clean compile'
}
}
}
} }
Upvotes: 17
Reputation: 6092
With Git for Windows, I had to add C:\Program Files\Git\bin
to the PATH
environment variable of the slave node in Jenkins (to get access to sh
), then add C:\Program Files\Git\usr\bin
to the PATH
locally on the Windows slave too (to get access to nohup
).
Upvotes: 13
Reputation: 22660
With Git for Windows 2.16.2, I was able to add C:\Program Files\Git\usr\bin to the PATH (rather than C:\Program Files\Git\bin) and consequently my sh commands work in both FreeStyle and Pipeline builds. No mklink was necessary. (Source)
Upvotes: 23
Reputation: 193
Switching sh to bat worked for me - I am running Jenkins on Windows. But only after I had resolved an issue caused by the fact I had not configured my tools (maven and the JDK) correctly in Jenkins either.
Upvotes: 6
Reputation: 3520
From a very quick search, it looks like your error is related to the following issue : JENKINS-33708
The main cause looks like the sh
step is not supported on the Windows. You may use bat
or install Cygwin
for instance.
Nevertheless two solutions were proposed in the previous link, suggesting you to do the following steps :
C:\Program Files\Git\bin
) is in the global search path, in order for Jenkins to find sh.exeDepending on your installation you may have to use these paths :
Upvotes: 95