From time to time I reveive error when getting SCM changes from Git repository and the option "SCM checkout retry count" (I have set it to 3) is not working.

      ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
      hudson.plugins.git.GitException: Command "git fetch -t git@github.com:xxx/xxx +refs/heads/:refs/remotes/origin/" returned status code 128:
      stdout:
      stderr: ssh_exchange_identification: Connection closed by remote host
      fatal: The remote end hung up unexpectedly

      at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:818)
      at hudson.plugins.git.GitAPI.launchCommand(GitAPI.java:780)
      at hudson.plugins.git.GitAPI.fetch(GitAPI.java:196)
      at hudson.plugins.git.GitAPI.fetch(GitAPI.java:1026)
      at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:812)
      at hudson.plugins.git.GitSCM.access$100(GitSCM.java:90)
      at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1096)
      at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1064)
      at hudson.FilePath.act(FilePath.java:842)
      at hudson.FilePath.act(FilePath.java:824)
      at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1064)
      at org.jenkinsci.plugins.multiplescms.MultiSCM.checkout(MultiSCM.java:117)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:1249)
      at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589)
      at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
      at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494)
      at hudson.model.Run.execute(Run.java:1488)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:236)
      ERROR: Could not fetch from any repository
      FATAL: Could not fetch from any repository
      hudson.plugins.git.GitException: Could not fetch from any repository
      at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1103)
      at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1064)
      at hudson.FilePath.act(FilePath.java:842)
      at hudson.FilePath.act(FilePath.java:824)
      at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1064)
      at org.jenkinsci.plugins.multiplescms.MultiSCM.checkout(MultiSCM.java:117)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:1249)
      at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589)
      at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
      at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494)
      at hudson.model.Run.execute(Run.java:1488)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:236)

          [JENKINS-14575] SCM checkout retry count not working

          Jyri Ilama added a comment -

          Doesn't work anymore with git-plugin v>= 2.0.
          The same problem as earlier, gets fixed by changing throwing from GitException -> IOException.

          git/src/main/java/hudson/plugins/git/GitSCM.java:629:

          catch (GitException ex)

          { throw new IOException("Failed to fetch from "+url.toString(), ex); }

          Jyri Ilama added a comment - Doesn't work anymore with git-plugin v>= 2.0. The same problem as earlier, gets fixed by changing throwing from GitException -> IOException. git/src/main/java/hudson/plugins/git/GitSCM.java:629: catch (GitException ex) { throw new IOException("Failed to fetch from "+url.toString(), ex); }

          Jyri Ilama added a comment -

          Doesn't work anymore with git-plugin v>= 2.0.
          The same problem as earlier, gets fixed by changing throwing from GitException -> IOException.
          git/src/main/java/hudson/plugins/git/GitSCM.java:629:
          catch (GitException ex)

          { throw new IOException("Failed to fetch from "+url.toString(), ex); }

          Jyri Ilama added a comment - Doesn't work anymore with git-plugin v>= 2.0. The same problem as earlier, gets fixed by changing throwing from GitException -> IOException. git/src/main/java/hudson/plugins/git/GitSCM.java:629: catch (GitException ex) { throw new IOException("Failed to fetch from "+url.toString(), ex); }

          Adam PAPAI added a comment -

          Sent PR and this time I added a test as well. So I won't happen again hopefully.

          Adam PAPAI added a comment - Sent PR and this time I added a test as well. So I won't happen again hopefully.

          Garbageyard added a comment -

          SCM checkout retry count isn’t working. I set it to 3 after upgrading the GIT client plugins.

          Following are the details:
          Jenkins core is at 1.547
          Git server plugin is at 1.3
          Jenkins GIT client plugin is at 1.8.0
          Jenkins GIT plugin is at 2.2.1

          Garbageyard added a comment - SCM checkout retry count isn’t working. I set it to 3 after upgrading the GIT client plugins. Following are the details: Jenkins core is at 1.547 Git server plugin is at 1.3 Jenkins GIT client plugin is at 1.8.0 Jenkins GIT plugin is at 2.2.1

          Just to note that it isn't working for me either - using Jenkins 1.558, Git Client Plugin 1.9.1, Git Plugin 2.2.1.

          Sadly, we do get the occasional ssh connect failure, and we can't seem to find a way to fix it by itself, so retrying the checkout is the only way for us to get more reliable builds.

          Christian Goetze added a comment - Just to note that it isn't working for me either - using Jenkins 1.558, Git Client Plugin 1.9.1, Git Plugin 2.2.1. Sadly, we do get the occasional ssh connect failure, and we can't seem to find a way to fix it by itself, so retrying the checkout is the only way for us to get more reliable builds.

          We still run into this issue - we're using git plugin v3.8.0

          e.g. while loading a shared pipeline library on a multibranch-pipeline

          We got error "unable to access [shared pipeline repo git repo url]: The requested URL returned error: 504

          WorkflowScript: Loading libraries failed

           

          No retry is done to load the shared pipeline library, while SCM retry count is set to 5 

          Sofie De Cooman added a comment - We still run into this issue - we're using git plugin v3.8.0 e.g. while loading a shared pipeline library on a multibranch-pipeline We got error "unable to access [shared pipeline repo git repo url] : The requested URL returned error: 504 WorkflowScript: Loading libraries failed   No retry is done to load the shared pipeline library, while SCM retry count is set to 5 

          Ernst de Haan added a comment - - edited

          Same issue here. Here's my code snippet:

          stage('checkout') {
              steps {
                  retry(env.TRY_COUNT) {
                      timeout(time: 45, unit: 'SECONDS') {
                          checkout scm
                      }
                  }
              }
          }
          

          Environment:

          • Linux
          • Jenkins 2.150.1
          • Pipeline plugin 2.5
          • Pipeline: Declarative plugin 1.3.2
          • git repository
          • Git plugin 3.9.1
          • Git Client plugin 2.7.3
          • Git Pipeline for Blue Ocean plugin 1.5.4

          What happens is:

          • when the checkout scm fails due to a time-out, it just falls through the retry
          • in other words: the retry is not even attempted

          Ernst de Haan added a comment - - edited Same issue here. Here's my code snippet: stage('checkout') { steps { retry(env.TRY_COUNT) { timeout(time: 45, unit: 'SECONDS') { checkout scm } } } } Environment: Linux Jenkins 2.150.1 Pipeline plugin 2.5 Pipeline: Declarative plugin 1.3.2 git repository Git plugin 3.9.1 Git Client plugin 2.7.3 Git Pipeline for Blue Ocean plugin 1.5.4 What happens is: when the checkout scm fails due to a time-out, it just falls through the retry in other words: the retry is not even attempted

          Steve Kipping added a comment -

          We have intermittent connection issues between our Jenkins instance on one server and our Bitbucket/Git server which is in a different region. We've been unable to rectify this issue, but the retry should work fine as we've tested this with a manual retry script outside of Jenkins. The SCM retry count doesn't work for us, but would be a good containment method if it did.

          • Git plugin 4.6.0
          • Jenkins 2.263.4 running in Docker

           

           

          Steve Kipping added a comment - We have intermittent connection issues between our Jenkins instance on one server and our Bitbucket/Git server which is in a different region. We've been unable to rectify this issue, but the retry should work fine as we've tested this with a manual retry script outside of Jenkins. The SCM retry count doesn't work for us, but would be a good containment method if it did. Git plugin 4.6.0 Jenkins 2.263.4 running in Docker    

          Hi all, I'm also facing the same issue. In fact, my issue is exactly the same as this one: JENKINS-39194. In other words, the "SCM checkout retry count" works fine for freestyle jobs, but not for pipeline jobs that use the "Pipeline script from SCM" option. I'm using workflow-cps plugin version 2.74 and Git plugin version 3.12.0.

          According to the linked ticket, the fix should be in for the version I'm using. Perhaps there has been a regression since then? Has anyone managed to implement a workaround to implement retries on pipeline jobs?

          Andrew Spiteri added a comment - Hi all, I'm also facing the same issue. In fact, my issue is exactly the same as this one: JENKINS-39194 . In other words, the "SCM checkout retry count" works fine for freestyle jobs, but not for pipeline jobs that use the "Pipeline script from SCM" option. I'm using workflow-cps plugin version 2.74 and Git plugin version 3.12.0. According to the linked ticket, the fix should be in for the version I'm using. Perhaps there has been a regression since then? Has anyone managed to implement a workaround to implement retries on pipeline jobs?

          Pavan Reddy added a comment -

          I'm also facing the same issue with the Jenkins multi branch pipelines. The below workaround works for me.

          for (int retryCount = 1; retryCount < 6; retryCount++) {
              try {
                  checkout([$class: 'GitSCM',
                            branches: [[name: branch ]],
                            doGenerateSubmoduleConfigurations: false,
                            extensions: [
                                    [$class: 'CloneOption',
                                     noTags: false,
                                     reference: referenceRepo,
                                     shallow: shallow],
                                    [$class: 'UserIdentity',
                                     email: 'jenkins@local.demo.com',
                                     name: 'Jenkins'
                                    ]
                            ],
                            submoduleCfg: [],
                            userRemoteConfigs: [[credentialsId: 'scm-ssh-key',
                                                 name: repo.name,
                                                 refspec: '+' + refspec + ':refs/remotes/' + repo.name + '/' + branch,
                                                 url: repo.getURL()
                                                ]]
                  ])
                  break;
              }
              catch (err) {
                  if (retryCount == 5){
                      error "${err}"
                  } else {
                      echo "code checkout failed with exception ${err}. retrying..."
                      // Retry after 15 seconds
                      sleep (time: 15, unit: 'SECONDS')
                  }
              }
          } 

          Pavan Reddy added a comment - I'm also facing the same issue with the Jenkins multi branch pipelines. The below workaround works for me. for ( int retryCount = 1; retryCount < 6; retryCount++) { try { checkout([$class: 'GitSCM' , branches: [[name: branch ]], doGenerateSubmoduleConfigurations: false , extensions: [ [$class: 'CloneOption' , noTags: false , reference: referenceRepo, shallow: shallow], [$class: 'UserIdentity' , email: 'jenkins@local.demo.com' , name: 'Jenkins' ] ], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'scm-ssh-key' , name: repo.name, refspec: '+' + refspec + ':refs/remotes/' + repo.name + '/' + branch, url: repo.getURL() ]] ]) break ; } catch (err) { if (retryCount == 5){ error "${err}" } else { echo "code checkout failed with exception ${err}. retrying..." // Retry after 15 seconds sleep (time: 15, unit: 'SECONDS' ) } } }

            Unassigned Unassigned
            lnowak Łukasz Nowak
            Votes:
            12 Vote for this issue
            Watchers:
            23 Start watching this issue

              Created:
              Updated: