Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scan for branches fails after pipeline creation by JobDSL #68

Open
gesundes opened this issue Dec 17, 2021 · 5 comments
Open

Scan for branches fails after pipeline creation by JobDSL #68

gesundes opened this issue Dec 17, 2021 · 5 comments
Assignees

Comments

@gesundes
Copy link

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
Copy link
Author

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.

@janisliepins
Copy link

janisliepins commented Dec 18, 2021

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

Reference to code changes: 746f980#diff-e1c036b87383d3592d0b18b391cf129ade08bd8d01bc89ea42d6bcd251ec0466

@aytuncbeken aytuncbeken self-assigned this Dec 25, 2021
@alexjfisher
Copy link

@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').

@coreegor
Copy link

coreegor commented Dec 9, 2022

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

private Boolean lookupInParameters = false;
private Boolean matchBranches = false;

@buamod
Copy link

buamod commented Feb 2, 2023

I also faced the issue ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants