Details
-
Type:
Bug
-
Status: Resolved (View Workflow)
-
Priority:
Critical
-
Resolution: Fixed
-
Component/s: durable-task-plugin
-
Labels:
-
Environment:Latest jenkins on linux, Windows agent via jnlp slave agent
-
Similar Issues:
Description
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
Attachments
Issue Links
- 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
-
- Open
-
- links to
Activity
Field | Original Value | New Value |
---|---|---|
Description |
This is related but not the same as JENKINS-33708 . 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} |
This is related but not the same as JENKINS-33708 . 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 | windows |
Link | This issue relates to JENKINS-33708 [ JENKINS-33708 ] |
Summary | Invocation of 'sh' pipeline step fails on windows | Invocation of 'sh' pipeline step fails on Windows due to use of slashes vs. backslashes |
Summary | Invocation of 'sh' pipeline step fails on Windows due to use of slashes vs. backslashes | BourneShellScript fails on Cygwin due to use of slashes vs. backslashes |
Remote Link | This issue links to "PR 33 (Web Link)" [ 15195 ] |
Assignee | Bertrand Latinville [ blatinville ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Status | In Progress [ 3 ] | In Review [ 10005 ] |
Priority | Minor [ 4 ] | Critical [ 2 ] |
Link |
This issue is duplicated by |
Resolution | Fixed [ 1 ] | |
Status | In Review [ 10005 ] | Resolved [ 5 ] |