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

Git plugin can't handle property references in repository URLs when polling

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Minor Minor
    • git-plugin
    • None

      We use a global property called "RepoRoot" to specify where our Git repositories live, so our repository URL's look similar to:

      ${RepoRoot}/RepoA.git

      ${RepoRoot}/RepoB.git

      This works fine when jobs actually run:

      ...
      Fetching changes from the remote Git repository
       > git.exe config remote.origin.url https://github.com/Foo/RepoA.git # timeout=10
      Cleaning workspace
       > git.exe rev-parse --verify HEAD # timeout=10
      Resetting working tree
       > git.exe reset --hard # timeout=10
       > git.exe clean -fdx # timeout=10
      Fetching upstream changes from https://github.com/Foo/RepoA.git
       > git.exe --version # timeout=10
      using .gitcredentials to set credentials
       > git.exe config --local credential.helper store --file=\"C:\Users\FOO\AppData\Local\Temp\git6742298409525835661.credentials\" # timeout=10
       > git.exe -c core.askpass=true fetch --tags --progress https://github.com/Foo/RepoA.git +refs/heads/*:refs/remotes/origin/*
      ...
      

      But we're seeing errors similar to the following in our polling log:

      Fetching upstream changes from ${RepoRoot}/RepoA.git
       > git.exe --version # timeout=10
       > git.exe -c core.askpass=true fetch --tags --progress ${RepoRoot}/RepoA.git +refs/heads/*:refs/remotes/origin/*
      FATAL: hudson.plugins.git.GitException: Failed to fetch from ${RepoRoot}/RepoA.git
      hudson.util.IOException2: hudson.plugins.git.GitException: Failed to fetch from ${RepoRoot}/RepoA.git
      	at hudson.plugins.git.GitSCM.compareRemoteRevisionWith(GitSCM.java:518)
      	at hudson.scm.SCM.compareRemoteRevisionWith(SCM.java:380)
      	at hudson.scm.SCM.poll(SCM.java:397)
      	at org.jenkinsci.plugins.multiplescms.MultiSCM.compareRemoteRevisionWith(MultiSCM.java:92)
      	at hudson.scm.SCM.poll(SCM.java:397)
      	at hudson.model.AbstractProject.pollWithWorkspace(AbstractProject.java:1462)
      	at hudson.model.AbstractProject._poll(AbstractProject.java:1433)
      	at hudson.model.AbstractProject.poll(AbstractProject.java:1344)
      	at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:515)
      	at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:544)
      	at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:118)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      	at java.util.concurrent.FutureTask.run(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      	at java.lang.Thread.run(Unknown Source)
      Caused by: hudson.plugins.git.GitException: Failed to fetch from ${RepoRoot}/RepoA.git
      	at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:695)
      	at hudson.plugins.git.GitSCM.compareRemoteRevisionWithImpl(GitSCM.java:598)
      	at hudson.plugins.git.GitSCM.compareRemoteRevisionWith(GitSCM.java:516)
      	... 16 more
      Caused by: hudson.plugins.git.GitException: Command "git.exe -c core.askpass=true fetch --tags --progress ${RepoRoot}/RepoA.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
      stdout: 
      stderr: fatal: repository 'https://github.com/Foo/RepoA.git/' not found
      
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1457)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1245)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:85)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:280)
      	at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:693)
      	... 18 more
      Done. Took 2.3 sec
      

      If I hard-code the repo root rather than use the global property reference, polling starts working.

      From the polling log, it appears as though the polling code is:

      1. Not resolving global property references in repo URLs when assembling git command lines

      2. Possibly incorrectly appending trailing forward slash characters to repo URLs

      Thanks folks, love your work.

          [JENKINS-26315] Git plugin can't handle property references in repository URLs when polling

            ndeloof Nicolas De Loof
            ronmacneil_ice Ron MacNeil
            Votes:
            3 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: