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

Backslashes are not correctly reduced when in environment var with substituted value

    • Pipeline - July/August

      Using jenkins pipeline, I have found that an environment property that takes variable substitution (see example below) doesn't get it's backslashes correctly reduced. I would have expected that both keys below start with "a\b". Instead, AAA_Key1 becomes "a
      b 0", while AAA_Key2 becomes "a\b".

       

      Example script

      pipeline {
          agent any
          stages {
              stage('Build') {
                  environment {
                      AAA_Key1 = "a\\b ${EXECUTOR_NUMBER}"
                      AAA_Key2 = "a\\b"
                  }
                  steps {
                      bat 'set'
                  }
              }
          }
      }

      Current Output

      c:\w\Pipeline Experimental\default>set
      AAA_Key1=a\\b 0
      AAA_Key2=a\b
      

      Current workaround is to use withEnv directly, which doesn't appear to suffer from this issue

          [JENKINS-45636] Backslashes are not correctly reduced when in environment var with substituted value

          Philip Peitsch created issue -
          Philip Peitsch made changes -
          Description Original: Using jenkins pipeline, I have found that an environment property that takes variable substitution (see example below) doesn't get it's backslashes correctly reduced. I would have expected that both keys below start with "a\b". Instead, AAA_Key1 becomes "a
          b 0", while AAA_Key2 becomes "a\b".

           

          Example script
          {code:java}
          pipeline {
              agent any
              stages {
                  stage('Build') {
                      environment {
                          AAA_Key1 = "a\\b ${EXECUTOR_NUMBER}"
                          AAA_Key2 = "a\\b"
                      }
                      steps {
                          bat 'set'
                      }
                  }
              }
          }{code}
          Current Output
          {code:java}
          c:\w\Pipeline Experimental\default>set
          AAA_Key1=a\\b 0
          AAA_Key2=a\b
          {code}
          New: Using jenkins pipeline, I have found that an environment property that takes variable substitution (see example below) doesn't get it's backslashes correctly reduced. I would have expected that both keys below start with "a\b". Instead, AAA_Key1 becomes "a
           b 0", while AAA_Key2 becomes "a\b".

           

          Example script
          {code:java}
          pipeline {
              agent any
              stages {
                  stage('Build') {
                      environment {
                          AAA_Key1 = "a\\b ${EXECUTOR_NUMBER}"
                          AAA_Key2 = "a\\b"
                      }
                      steps {
                          bat 'set'
                      }
                  }
              }
          }{code}
          Current Output
          {code:java}
          c:\w\Pipeline Experimental\default>set
          AAA_Key1=a\\b 0
          AAA_Key2=a\b
          {code}

          Current workaround is to use withEnv directly, which doesn't appear to suffer from this issue
          Andrew Bayer made changes -
          Labels New: declarative-variable-and-method-resolution
          James Dumay made changes -
          Sprint New: Pipeline - July/August [ 371 ]
          Andrew Bayer made changes -
          Link New: This issue depends on JENKINS-42753 [ JENKINS-42753 ]
          Andrew Bayer made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]
          Liam Newman made changes -
          Status Original: Resolved [ 5 ] New: Closed [ 6 ]

            abayer Andrew Bayer
            peitschie Philip Peitsch
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: