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

Global pipeline library & simple 'checkout scm' rebuilds each polling cycle

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • git-plugin
    • None
    • Refer to docker image referenced in description
      git plugin 3.3.0
      git client plugin 2.4.2

    Description

      Simple 'checkout scm' with polling defined will always detect changes even when there are no changes. May be related to the added complexity from multiple repositories being polled (since the example job definition uses a global pipeline library).

      More complicated checkout does not have the same issue.

      Steps I took to duplicate the problem:

      1. Copy JDK 8 tar file into my public_html/jdk directory
          $ mkdir -p ~/public_html/jdk/
          $ cp jdk-8u131-linux-*tar.gz ~/public_html/jdk/
        
      2. Copy the jenkins-bugs repo into a local bare repo for faster cloning later
          $ mkdir -p ~/git/bare/bugs/
          $ cd ~/git/bare/bugs/
          $ git clone --mirror https://github.com/MarkEWaite/jenkins-bugs
        
      3. Clone, build, and run the docker instance
          $ git lfs clone https://github.com/MarkEWaite/docker-lfs JENKINS-43754
          $ cd JENKINS-43754
          $ git lfs fetch origin origin/lts-with-plugins
          $ git checkout -b lts-with-plugins origin/lts-with-plugins
          $ docker build -t jenkins:JENKINS-43754 .
          $ VOL1=~/public_html:/var/jenkins_home/userContent/
          $ VOL2=~/git/bare:/var/lib/git/mwaite/
          $ docker run -i --rm --publish 8080:8080 --volume $VOL1 --volume $VOL2 jenkins:JENKINS-43687
        
      4. Connect a web browser to that docker instance (http://localhost:8080)
      5. Open the "Bugs - Pipeline Checks" folder
      6. Open the "jenkins-bugs" multi-branch pipeline job
      7. Click the "Scan Multibranch Pipeline" link and then the "Run Now" link to start branch indexing
      8. Confirm the JENKINS-43687 job runs successfully
      9. Commit a change to the JENKINS-43687 branch, and push the change
          $ git clone https://github.com/MarkEWaite/jenkins-bugs
          $ cd jenkins-bugs
          $ git checkout -b JENKINS-43754 -t origin/JENKINS-43754
          $ ant increment
          $ git push
        
      10. Wait 7 minutes while watching the git polling log, confirm the job runs without a change, if the simple checkout scm is used, and does not run without changes if the more complex checkout is used

      Attachments

        Issue Links

          Activity

            My workaround is to add a checkbox that the user has to check to force the rebuild to actually happen. :-/

            aarondmarasco_vsi Aaron D. Marasco added a comment - My workaround is to add a checkbox that the user has to check to force the rebuild to actually happen. :-/

            Another workaround would involve checking the new currentBuild.getBuildCauses() provided by JENKINS-41272.

            aarondmarasco_vsi Aaron D. Marasco added a comment - Another workaround would involve checking the new currentBuild.getBuildCauses() provided by JENKINS-41272 .

            I just stumbled upon basic-branch-build-strategies-plugin which should be able to fix your problems.

            aarondmarasco_vsi Aaron D. Marasco added a comment - I just stumbled upon basic-branch-build-strategies-plugin which should be able to fix your problems.
            markewaite Mark Waite added a comment -

            Thanks aarondmarasco_vsi can you explain further why you think that the basic branch build strategies plugin would prevent the unnecessary build which happens each time the repository is polled for changes when there are no changes? Basic branch build strategies plugin doesn't alter the change detection logic in the git plugin and it doesn't alter the polling logic. I don't see how it could resolve the issue.

            markewaite Mark Waite added a comment - Thanks aarondmarasco_vsi can you explain further why you think that the basic branch build strategies plugin would prevent the unnecessary build which happens each time the repository is polled for changes when there are no changes? Basic branch build strategies plugin doesn't alter the change detection logic in the git plugin and it doesn't alter the polling logic. I don't see how it could resolve the issue.

            I guess I misunderstood the whole problem, sorry. That fixes half of my problems but I guess I haven't seen if it triggers false every hour on me. My other problem was that every insignificant branch was getting built when I only wanted specific ones.

            This might help you then; I've been using it for a while. Sucks that you still get "aborted" builds - https://gist.github.com/AaronDMarasco-VSI/a1f3829869cbf3256ca52919eba1cd16

            aarondmarasco_vsi Aaron D. Marasco added a comment - I guess I misunderstood the whole problem, sorry. That fixes half of my problems but I guess I haven't seen if it triggers false every hour on me. My other problem was that every insignificant branch was getting built when I only wanted specific ones. This might help you then; I've been using it for a while. Sucks that you still get "aborted" builds - https://gist.github.com/AaronDMarasco-VSI/a1f3829869cbf3256ca52919eba1cd16

            People

              Unassigned Unassigned
              markewaite Mark Waite
              Votes:
              2 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: