-
Bug
-
Resolution: Fixed
-
Critical
-
Latest jenkins on linux, Windows agent via jnlp slave agent
This is related but not the same as JENKINS-33708 .
I'm trying to run pipeline code on windows via cygwin bash:
stage("test") { node("windows"){ sh """#!/bin/bash echo hello world""" } }
The output of the workflow looks like that:
[c:\b\workspace\test_wintendo_pipeline] Running shell script sh: c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\script.sh: command not found
After some fiddling with procmon I insulated what it was actually doing:
nohup sh -c "echo $$ > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\pid'; jsc=durable-6eaaad0f799f776c331f1724d18dab7f; JENKINS_SERVER_COOKIE=$jsc 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\script.sh' > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\jenkins-log.txt' 2>&1; echo $? > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\jenkins-result.txt'"
Reducing it to what actually causes the error that we see in the scripts output in jenkins:
sh -c "'c:\b\workspace\durable-bc34ce35\script.sh'" sh: c:\b\workspace\durable-bc34ce35\script.sh: command not found
Fixing it seems only be possible by using slashes instead of backslashes:
sh -c "'c:/b/workspace/durable-bc34ce35/script.sh'" + echo hello world hello world
- is duplicated by
-
JENKINS-32017 workflow plugin sh hangs on windows node
-
- Resolved
-
- relates to
-
JENKINS-33708 Invocation of 'sh' on Windows should provide a more helpful error
-
- Fixed but Unreleased
-
- links to
[JENKINS-40225] BourneShellScript fails on Cygwin due to use of slashes vs. backslashes
Description |
Original:
This is related but not the same as I'm trying to run pipeline code on windows via cygwin bash: {code:code} stage("test") { node("windows"){ sh """#!/bin/bash echo hello world""" } } {code} The output of the workflow looks like that: {code:code} [c:\b\workspace\test_wintendo_pipeline] Running shell script sh: c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\script.sh: command not found {code} After some fiddling with procmon I insulated what it was actually doing: {code:code} nohup sh -c "echo $$ > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\pid'; jsc=durable-6eaaad0f799f776c331f1724d18dab7f; JENKINS_SERVER_COOKIE=$jsc 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\script.sh' > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\jenkins-log.txt' 2>&1; echo $? > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\jenkins-result.txt'" {code} Reducing it to what actually causes the error that we see in the scripts output in jenkins: {code:code} sh -c "'c:\b\workspace\durable-bc34ce35\script.sh'" sh: c:\b\workspace\durable-bc34ce35\script.sh: command not found {code} Fixing it seems only be possible by using slashes instead of backslashes: {code:code} sh -c "'c:/b/workspace/durable-bc34ce35/script.sh'" + echo hello world hello world {code} |
New:
This is related but not the same as I'm trying to run pipeline code on windows via cygwin bash: {code} stage("test") { node("windows"){ sh """#!/bin/bash echo hello world""" } } {code} The output of the workflow looks like that: {code:none} [c:\b\workspace\test_wintendo_pipeline] Running shell script sh: c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\script.sh: command not found {code} After some fiddling with procmon I insulated what it was actually doing: {code:none} nohup sh -c "echo $$ > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\pid'; jsc=durable-6eaaad0f799f776c331f1724d18dab7f; JENKINS_SERVER_COOKIE=$jsc 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\script.sh' > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\jenkins-log.txt' 2>&1; echo $? > 'c:\b\workspace\test_wintendo_pipeline@tmp\durable-4da51fcf\jenkins-result.txt'" {code} Reducing it to what actually causes the error that we see in the scripts output in jenkins: {code:none} sh -c "'c:\b\workspace\durable-bc34ce35\script.sh'" sh: c:\b\workspace\durable-bc34ce35\script.sh: command not found {code} Fixing it seems only be possible by using slashes instead of backslashes: {code:none} sh -c "'c:/b/workspace/durable-bc34ce35/script.sh'" + echo hello world hello world {code} |
Labels | New: windows |
Link |
New:
This issue relates to |
Summary | Original: Invocation of 'sh' pipeline step fails on windows | New: Invocation of 'sh' pipeline step fails on Windows due to use of slashes vs. backslashes |
Summary | Original: Invocation of 'sh' pipeline step fails on Windows due to use of slashes vs. backslashes | New: BourneShellScript fails on Cygwin due to use of slashes vs. backslashes |
Remote Link | New: This issue links to "PR 33 (Web Link)" [ 15195 ] |
Assignee | New: Bertrand Latinville [ blatinville ] |
Java source involved in this bug:
https://github.com/jenkinsci/durable-task-plugin/src/main/java/org/jenkinsci/plugins/durabletask/BourneShellScript.java
https://github.com/jenkinsci/pipeline-plugin/tree/1.14.x / durable-task-step/src/main/java/org/jenkinsci/plugins/workflow/steps/durable_task/ShellStep.java
https://github.com/jenkinsci/pipeline-plugin/tree/1.14.x / durable-task-step/src/main/java/org/jenkinsci/plugins/workflow/steps/durable_task/DurableTaskStep.java