-
Bug
-
Resolution: Unresolved
-
Minor
-
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() } } } } }
- relates to
-
JENKINS-48581 Pipeline should gracefully error when receiving: GitException: Failed to merge AnyObjectId[
-
- Open
-
So JENKINS-48581 does appear to be a legit issue, but this is, I think, actually the correct (albeit weird in the case of a PR) behavior. If polling can't complete for whatever reason, then it can't determine whether a new build needs to be run, so needs to poll again next time. That feels right to me, even if the result here is annoying.