Windows上Jenkins的git插件不使用带子模块的凭据

我在
Windows上使用git与Jenkins有问题,我可以使用ssh凭据从BitBucket获取git存储库,但是当它尝试获取同一帐户上的子模块存储库时,我获得了权限异常.

从git@bitbucket.org获取上游更改:mycomp / at.git

C:\CI\Git\bin\git.exe –version
using GIT_SSH to set credentials Bitbucket key
C:\CI\Git\bin\git.exe fetch –tags –progress git@bitbucket.org:mycomp/at.git +refs/heads/:refs/remotes/origin/
C:\CI\Git\bin\git.exe rev-parse “origin/ci^{commit}”
Checking out Revision a079842300ba7fc9e6f4e7182c94af2cfc3af0ba (origin/ci)
C:\CI\Git\bin\git.exe config core.sparsecheckout
C:\CI\Git\bin\git.exe checkout -f a079842300ba7fc9e6f4e7182c94af2cfc3af0ba
C:\CI\Git\bin\git.exe rev-list a079842300ba7fc9e6f4e7182c94af2cfc3af0ba
C:\CI\Git\bin\git.exe remote
C:\CI\Git\bin\git.exe submodule init
C:\CI\Git\bin\git.exe submodule sync
C:\CI\Git\bin\git.exe config –get remote.origin.url
C:\CI\Git\bin\git.exe submodule update
FATAL: Command “C:\CI\Git\bin\git.exe submodule update” returned status code 1:
stdout:
stderr: Cloning into ‘include/portal_air’…
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Clone of 'git@bitbucket.org:mycomp/portal_air.git' into submodule path 'include/portal_air' failed

hudson.plugins.git.GitException: Command "C:\CI\Git\bin\git.exe submodule update" returned status code 1:
stdout: 
stderr: Cloning into 'include/portal_air'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Clone of 'git@bitbucket.org:mycomp/portal_air.git' into submodule path 'include/portal_air' failed

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1406)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$400(CliGitAPIImpl.java:87)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$6.execute(CliGitAPIImpl.java:741)
    at hudson.plugins.git.extensions.impl.SubmoduleOption.onCheckoutCompleted(SubmoduleOption.java:77)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:908)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580)
    at hudson.model.Run.execute(Run.java:1684)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:231)

是的,这是克隆项目及其子模块时遇到的问题.

我使用https而不是git @来克隆repos,git scm插件只将通过jenkins传递的凭据应用到主模块而不是子模块.
要解决这个问题,我必须运行一个存储凭证的进程,并将其传递给任何需要身份验证的git操作.像这样
http://www.scmtechblog.net/2014/12/git-authentication-for-automation-script.html

现在,您正尝试通过git @访问并仍然获得权限被拒绝,您能否确保该帐户对您添加了ssh密钥的子模块存储库具有正确的访问权限.

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。