Pull request with a conflict and SCM poll properties runs in an infinite loop

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Minor
    • Component/s: pipeline
    • None

      It appears that a Multibranch Pipeline, with a Pull Request with a conflict in the source code (related to JENKINS-48581), will result in an infinite loop errors because of the conflict.

      Best I can tell is that because this Pipeline is using an SCM Poll, whenever it polls in the Pull Request, it sees an exception and fails to complete the polling operation, which results in the Pipeline executing and failing every 15 minutes.

      #!/usr/bin/env groovy
      
      def imageName = 'jenkinsciinfra/account-app'
      
      properties([
          buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5')),
          pipelineTriggers([[$class:"SCMTrigger", scmpoll_spec:"H/15 * * * *"]]),
      ])
      
      node('docker') {
          stage('Build') {
              timestamps {
                  checkout scm
                  docker.image('openjdk:8-jdk').inside {
                      sh './gradlew --no-daemon --info war'
                      archiveArtifacts artifacts: 'build/libs/*.war', fingerprint: true
                  }
              }
          }
      
          def container
          stage('Prepare Container') {
              timestamps {
                  sh 'git rev-parse HEAD > GIT_COMMIT'
                  shortCommit = readFile('GIT_COMMIT').take(6)
                  def imageTag = "${env.BUILD_ID}-build${shortCommit}"
                  echo "Creating the container ${imageName}:${imageTag}"
                  container = docker.build("${imageName}:${imageTag}")
              }
          }
      
          stage('Validate') {
              timestamps {
                  sh 'make check'
              }
          }
      
          /* Assuming we're not inside of a pull request or multibranch pipeline */
          if (!(env.CHANGE_ID || env.BRANCH_NAME)) {
              stage('Publish container') {
                  infra.withDockerCredentials {
                      timestamps { container.push() }
                  }
              }
          }
      }
      

            Assignee:
            Unassigned
            Reporter:
            R. Tyler Croy
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: