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

Cannot get RestartDeclarativePipelineCause origin run number and stage name by using RunWrapper.getBuildCauses

      The org.jenkinsci.plugins.pipeline.modeldefinition.causes.RestartDeclarativePipelineCause doesn't set @Exported visibility for the getOriginRunNumber and getOriginStage methods, so it is impossible to read values by using Jenkins declarative API: currentBuild.getBuildCauses().

      pipeline {
          agent {
              label 'tiny'
          }
          stages {
              stage('One') {
                  steps {
                      echo 'one'
                  }
              }
              stage('Two') {
                  steps {
                      echo 'two'
                      script {
                          currentBuild.getBuildCauses().each {
                              echo "${it}"
                          }
                      }
                  }
              }
          }
      }
      

      Output when restarted from Stage:

      [...]
      12:02:38  [Pipeline] echo
      12:02:38  [_class:hudson.model.Cause$UserIdCause, shortDescription:Started by user Gabrys, Adam, userId:SECRET, userName:Gabrys, Adam]
      12:02:38  [Pipeline] echo
      12:02:38  [_class:org.jenkinsci.plugins.pipeline.modeldefinition.causes.RestartDeclarativePipelineCause, shortDescription:Restarted from build #13, stage One]
      [...]
      

      As you see Cause$UserIdCause exported all fields and RestartDeclarativePipelineCause only the short description (I don't want to parse string which btw. could be localized).

          [JENKINS-64428] Cannot get RestartDeclarativePipelineCause origin run number and stage name by using RunWrapper.getBuildCauses

          Adam Gabryś created issue -
          Adam Gabryś made changes -
          Description Original: The [org.jenkinsci.plugins.pipeline.modeldefinition.causes.RestartDeclarativePipelineCause|https://github.com/jenkinsci/pipeline-model-definition-plugin/blob/pipeline-model-definition-1.7.2/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/causes/RestartDeclarativePipelineCause.java] doesn't set [@Exported|https://stapler.kohsuke.org/apidocs/org/kohsuke/stapler/export/Exported.html] visibility for the {{getOriginRunNumber}} and {{getOriginStage}} methods, so it is impossible to read values by using Jenkins declarative API: {{currentBuild.getBuildCauses()}}.

          {code}
          pipeline {
              agent {
                  label 'tiny'
              }
              stages {
                  stage('One') {
                      steps {
                          echo 'one'
                      }
                  }
                  stage('Two') {
                      steps {
                          echo 'two'
                          script {
                              currentBuild.getBuildCauses().each {
                                  echo "${it}"
                              }
                          }
                      }
                  }
              }
          }
          {code}

          Output when restarted from Stage:
          {noformat}
          [...]
          12:02:38 [Pipeline] echo
          12:02:38 [_class:hudson.model.Cause$UserIdCause, shortDescription:Started by user Gabrys, Adam, userId:SECRET, userName:Gabrys, Adam]
          12:02:38 [Pipeline] echo
          12:02:38 [_class:org.jenkinsci.plugins.pipeline.modeldefinition.causes.RestartDeclarativePipelineCause, shortDescription:Restarted from build #13, stage One]
          [...]
          {noformat}

          As you see {{Cause$UserIdCause}} exported all fields and {{RestartDeclarativePipelineCause}} only description (I don't want to parse string which btw. could be localized).
          New: The [org.jenkinsci.plugins.pipeline.modeldefinition.causes.RestartDeclarativePipelineCause|https://github.com/jenkinsci/pipeline-model-definition-plugin/blob/pipeline-model-definition-1.7.2/pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/causes/RestartDeclarativePipelineCause.java] doesn't set [@Exported|https://stapler.kohsuke.org/apidocs/org/kohsuke/stapler/export/Exported.html] visibility for the {{getOriginRunNumber}} and {{getOriginStage}} methods, so it is impossible to read values by using Jenkins declarative API: {{currentBuild.getBuildCauses()}}.

          {code}
          pipeline {
              agent {
                  label 'tiny'
              }
              stages {
                  stage('One') {
                      steps {
                          echo 'one'
                      }
                  }
                  stage('Two') {
                      steps {
                          echo 'two'
                          script {
                              currentBuild.getBuildCauses().each {
                                  echo "${it}"
                              }
                          }
                      }
                  }
              }
          }
          {code}

          Output when restarted from Stage:
          {noformat}
          [...]
          12:02:38 [Pipeline] echo
          12:02:38 [_class:hudson.model.Cause$UserIdCause, shortDescription:Started by user Gabrys, Adam, userId:SECRET, userName:Gabrys, Adam]
          12:02:38 [Pipeline] echo
          12:02:38 [_class:org.jenkinsci.plugins.pipeline.modeldefinition.causes.RestartDeclarativePipelineCause, shortDescription:Restarted from build #13, stage One]
          [...]
          {noformat}

          As you see {{Cause$UserIdCause}} exported all fields and {{RestartDeclarativePipelineCause}} only the short description (I don't want to parse string which btw. could be localized).

            Unassigned Unassigned
            agabrys Adam Gabryś
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: