Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-40225

BourneShellScript fails on Cygwin due to use of slashes vs. backslashes

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • durable-task-plugin
    • 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
      

          [JENKINS-40225] BourneShellScript fails on Cygwin due to use of slashes vs. backslashes

          Wilfried Goesgens created issue -
          Jesse Glick made changes -
          Description Original: 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}

          New: 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}

          Jesse Glick made changes -
          Labels New: windows
          Jesse Glick made changes -
          Link New: This issue relates to JENKINS-33708 [ JENKINS-33708 ]
          Jesse Glick made changes -
          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
          Jesse Glick made changes -
          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
          Jesse Glick made changes -
          Remote Link New: This issue links to "PR 33 (Web Link)" [ 15195 ]
          Jesse Glick made changes -
          Assignee New: Bertrand Latinville [ blatinville ]
          Jesse Glick made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          Jesse Glick made changes -
          Status Original: In Progress [ 3 ] New: In Review [ 10005 ]
          Jesse Glick made changes -
          Priority Original: Minor [ 4 ] New: Critical [ 2 ]

            blatinville Bertrand Latinville
            dothebart Wilfried Goesgens
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: