Loading private repository submodules in Jenkins Project

柔情痞子 提交于 2019-12-12 11:26:43

问题


I'm currently stuck trying to get Jenkins to

  • clone a project and it's submodules
  • use the deploy key config as per Authenticate Jenkins CI for Github private repository

Here is my output from Jenkins Console.. it's obvious the plugin is attempting to use the straight project name.. which is not setup to use the key.

  Started by user '__'
Building in workspace /var/lib/jenkins/workspace/JENKINSPROJECTNAME
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.PROJECTREPO.url github-deploy-project:Owner/ProjectName # timeout=10
Fetching upstream changes from github-deploy-project:Owner/ProjectName
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --tags --progress github-deploy-project:Owner/ProjectName +refs/heads/*:refs/remotes/ProjectName/*
 > git rev-parse refs/remotes/ProjectName/master^{commit} # timeout=10
 > git rev-parse refs/remotes/ProjectName/ProjectName/master^{commit} # timeout=10
Checking out Revision ______________ (refs/remotes/ProjectName/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f _____________
 > git rev-list ________________ # timeout=10
 > git remote # timeout=10
 > git submodule init # timeout=10
 > git submodule sync # timeout=10
 > git config --get remote.ProjectName.url # timeout=10
 > git submodule update --init --recursive
FATAL: Command "git submodule update --init --recursive" returned status code 1:
stdout: 
stderr: Cloning into 'submodule/FolderName'...
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/Owner/SubModuleProject.git/'
Clone of 'https://github.com/Owner/SubModuleProject.git' into submodule path 'submodule/FolderName' failed

hudson.plugins.git.GitException: Command "git submodule update --init --recursive" returned status code 1:
stdout: 
stderr: Cloning into 'submodule/FolderName'...
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/Owner/SubModuleProject.git/'
Clone of 'https://github.com/Owner/SubModuleProject.git' into submodule path 'submodule/FolderName' failed

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1407)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$400(CliGitAPIImpl.java:87)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$6.execute(CliGitAPIImpl.java:742)
    at hudson.plugins.git.extensions.impl.SubmoduleOption.onCheckoutCompleted(SubmoduleOption.java:77)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:920)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1252)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:615)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:524)
    at hudson.model.Run.execute(Run.java:1706)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:232)

回答1:


Git is recursively fetching the repos defined in .gitmodules at the base of the main project.

You have a couple of ways to attack this:

  • Change .gitmodules to refer to a copy of the repo with required access controls.
  • Fork the github repo, and change the required access controls.
  • Remove the entry in .submodule and instead copy it into the main repo.
  • If you control the github repo in question, configure ~jenkins/.ssh/config IdentityFile


来源:https://stackoverflow.com/questions/25535632/loading-private-repository-submodules-in-jenkins-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!