remote-file-plugin icon indicating copy to clipboard operation
remote-file-plugin copied to clipboard

Scan for branches fails after pipeline creation by JobDSL

Open gesundes opened this issue 3 years ago • 5 comments

Describe the bug Scan for branches fails after pipeline creation by JobDSL job.

To Reproduce Steps to reproduce the behavior:

  1. Create a pipeline by JobDSL job
  2. Go to the pipeline
  3. Push the button ('Scan Multibranch Pipeline Now')
  4. Take a look into the log of the scan and see java.lang.NullPointerException

Workaround Go to Configure and push Save button without any changes.

Log

Fri Dec 17 11:08:25 UTC 2021] Starting branch indexing...
 > git --version # timeout=10
 > git --version # 'git version 2.25.1'
using GIT_ASKPASS to set credentials service-user
 > git ls-remote --symref -- <REPOSITORY_URL> # timeout=10
 > git rev-parse --resolve-git-dir /var/lib/jenkins/caches/git-fe9dc345026856a1354c034869a81bf1/.git # timeout=10
Setting origin to <REPOSITORY_URL>
 > git config remote.origin.url <REPOSITORY_URL> # timeout=10
Fetching & pruning origin...
Listing remote references...
 > git config --get remote.origin.url # timeout=10
 > git --version # timeout=10
 > git --version # 'git version 2.25.1'
using GIT_ASKPASS to set credentials service-user
 > git ls-remote -h -- <REPOSITORY_URL> # timeout=10
Fetching upstream changes from origin
 > git config --get remote.origin.url # timeout=10
using GIT_ASKPASS to set credentials service-user
 > git fetch --tags --force --progress --prune -- origin +refs/heads/*:refs/remotes/origin/* # timeout=10
Checking branches...
  Checking branch <BRANCH_1>
No local file defined. Skipping Source Code SCM probe, since Jenkinsfile will be provided by Remote Jenkins File Plugin
    Met criteria
ERROR: [Fri Dec 17 11:08:26 UTC 2021] Could not fetch branches from source 1
[Fri Dec 17 11:08:26 UTC 2021] Finished branch indexing. Indexing took 0.49 sec
FATAL: Failed to recompute children of Folder » Pipeline
java.lang.NullPointerException
	at org.jenkinsci.plugins.workflow.multibranch.extended.RemoteJenkinsFileWorkflowBranchProjectFactory.createDefinition(RemoteJenkinsFileWorkflowBranchProjectFactory.java:97)
	at org.jenkinsci.plugins.workflow.multibranch.AbstractWorkflowBranchProjectFactory.setBranch(AbstractWorkflowBranchProjectFactory.java:63)
	at org.jenkinsci.plugins.workflow.multibranch.AbstractWorkflowBranchProjectFactory.newInstance(AbstractWorkflowBranchProjectFactory.java:54)
	at org.jenkinsci.plugins.workflow.multibranch.AbstractWorkflowBranchProjectFactory.newInstance(AbstractWorkflowBranchProjectFactory.java:44)
	at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observeNew(MultiBranchProject.java:2055)
	at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:1986)
	at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
	at jenkins.plugins.git.AbstractGitSCMSource$8.discoverBranches(AbstractGitSCMSource.java:705)
	at jenkins.plugins.git.AbstractGitSCMSource$8.run(AbstractGitSCMSource.java:609)
	at jenkins.plugins.git.AbstractGitSCMSource$8.run(AbstractGitSCMSource.java:588)
	at jenkins.plugins.git.AbstractGitSCMSource.doRetrieve(AbstractGitSCMSource.java:394)
	at jenkins.plugins.git.AbstractGitSCMSource.doRetrieve(AbstractGitSCMSource.java:350)
	at jenkins.plugins.git.AbstractGitSCMSource.retrieve(AbstractGitSCMSource.java:588)
	at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
	at jenkins.scm.api.SCMSource.fetch(SCMSource.java:283)
	at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:641)
	at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:278)
	at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:166)
	at jenkins.branch.MultiBranchProject$BranchIndexing.run(MultiBranchProject.java:1032)
	at hudson.model.ResourceController.execute(ResourceController.java:99)
	at hudson.model.Executor.run(Executor.java:432)
Finished: FAILURE

JobDSL code

branchSources {
  git {
    id('1')
    remote('<CODE_REPOSITORY_URL>')
    credentialsId('service-user')
  }
}
factory {
  remoteJenkinsFileWorkflowBranchProjectFactory{
    localMarker('')
    remoteJenkinsFile('folder/subfolder/Jenkinsfile.groovy')
    remoteJenkinsFileSCM{
      gitSCM{
        userRemoteConfigs{
          userRemoteConfig{
            name('origin')
            url('<JENKINSFILES_REPOSITORY_URL>')
            refspec('')
            credentialsId('service-user')
          }
          browser{
            gitLab {
              repoUrl('<REPOSITORY_URL>')
            }
          }
          gitTool('')
        }
      }
    }
  }
}
orphanedItemStrategy {
  discardOldItems {
    daysToKeep(90)
  }
}

Expected behavior A repository can be scanned for branches right after creation by JobDSL.

Versions Jenkins 2.319.1 Job DSL 1.78.1 Remote Jenkinsfile Provider 1.21

gesundes avatar Dec 17 '21 11:12 gesundes

I added a few more options to the JobDSL config:

      fallbackBranch('master')
      matchBranches(false)
      lookupInParameters(false)

and it fixed the problem, looks like.

Anyway, it's not ok when one can't rely on default values.

gesundes avatar Dec 17 '21 12:12 gesundes

Had the same issue. set these: matchBranches(false) lookupInParameters(false)

Reference to code changes: https://github.com/jenkinsci/remote-file-plugin/commit/746f980c889433a8e8db8ec575e4c0da4645de06#diff-e1c036b87383d3592d0b18b391cf129ade08bd8d01bc89ea42d6bcd251ec0466

janisliepins avatar Dec 18 '21 11:12 janisliepins

@aytuncbeken Also hit this today using after a recent jenkins upgrade (including this plugin).

java.lang.NullPointerException
	at org.jenkinsci.plugins.workflow.multibranch.extended.RemoteJenkinsFileWorkflowMultiBranchProjectFactory.getMatchBranches(RemoteJenkinsFileWorkflowMultiBranchProjectFactory.java:178)
	at org.jenkinsci.plugins.workflow.multibranch.extended.RemoteJenkinsFileWorkflowMultiBranchProjectFactory.customize(RemoteJenkinsFileWorkflowMultiBranchProjectFactory.java:160)
	at org.jenkinsci.plugins.workflow.multibranch.AbstractWorkflowMultiBranchProjectFactory.doCreateProject(AbstractWorkflowMultiBranchProjectFactory.java:51)
	at org.jenkinsci.plugins.workflow.multibranch.AbstractWorkflowMultiBranchProjectFactory.doCreateProject(AbstractWorkflowMultiBranchProjectFactory.java:46)
	at jenkins.branch.MultiBranchProjectFactory$BySCMSourceCriteria.createNewProject(MultiBranchProjectFactory.java:235)
	at jenkins.branch.OrganizationFolder$SCMSourceObserverImpl$1.completeNew(OrganizationFolder.java:1451)
	at jenkins.branch.OrganizationFolder$SCMSourceObserverImpl$1.complete(OrganizationFolder.java:1395)
	at jenkins.scm.api.trait.SCMNavigatorRequest.process(SCMNavigatorRequest.java:254)
	at jenkins.scm.api.trait.SCMNavigatorRequest.process(SCMNavigatorRequest.java:204)
	at com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMNavigator.visitSources(BitbucketSCMNavigator.java:501)
	at jenkins.scm.api.SCMNavigator.visitSources(SCMNavigator.java:221)
	at jenkins.branch.OrganizationFolder$SCMEventListenerImpl.onSCMHeadEvent(OrganizationFolder.java:1051)
	at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
	at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
	at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:546)
	at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:67)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)

@gesundes - Thanks for documenting the workaround. That fixed it for me too, (but agree it should 'just work').

alexjfisher avatar Oct 17 '22 13:10 alexjfisher

I also faced with it on https://github.com/jenkinsci/remote-file-plugin/releases/tag/remote-file-1.23 Even though the attribute already has a default value https://github.com/jenkinsci/remote-file-plugin/blob/11ac27face37b026b783c393232381a8c2dfac8c/src/main/java/org/jenkinsci/plugins/workflow/multibranch/extended/RemoteJenkinsFileWorkflowMultiBranchProjectFactory.java#L29-L30

coreegor avatar Dec 09 '22 08:12 coreegor

I also faced the issue ?

buamod avatar Feb 02 '23 06:02 buamod