【问题标题】:How to link Jenkins to private Github repository?如何将 Jenkins 链接到私有 Github 存储库?
【发布时间】:2017-08-29 11:10:42
【问题描述】:

我的目标是将私有 Github 存储库拉到 Jenkins。

这里有一些背景:

  1. MacOS
  2. Jenkins 本地托管,localhost:8080
  3. 在 Jenkins 中安装了 Git 插件和 Github 插件。
  4. 如果我将存储库设为公开,Jenkins 中的一切都很好。
  5. 从命令行,我可以使用我在 Jenkins 中使用的相同凭据执行“git clone”该私有存储库。

但是当我将其设置为 Private 并将其用作 Jenkins 的 Source 时,它​​就坏了。

错误是:

Building in workspace /Users/Shared/Jenkins/Home/jobs/TestFramework/workspace
     > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
    Fetching changes from the remote Git repository
     > /usr/bin/git config remote.origin.url https://github.com/XXXXXXX/testframework.git # timeout=10
    Fetching upstream changes from https://github.com/XXXXXXX/testframework.git
     > /usr/bin/git --version # timeout=10
    using GIT_ASKPASS to set credentials 
     > /usr/bin/git fetch --tags --progress https://github.com/XXXXXXX/testframework.git +refs/heads/*:refs/remotes/origin/* # timeout=5
    ERROR: Timeout after 5 minutes
    ERROR: Error fetching remote repo 'origin'
    hudson.plugins.git.GitException: Failed to fetch from https://github.com/XXXXXXX/testframework.git
        at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:806)
        at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1070)
        at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
        at hudson.scm.SCM.checkout(SCM.java:496)
        at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
        at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
        at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
        at hudson.model.Run.execute(Run.java:1728)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
        at hudson.model.ResourceController.execute(ResourceController.java:98)
        at hudson.model.Executor.run(Executor.java:405)
    Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git fetch --tags --progress https://github.com/XXXXXXX/testframework.git +refs/heads/*:refs/remotes/origin/*" returned status code 143:

我在网上尝试了一些建议:

  1. ssh-keygen 到 /Users/shared/jenkins/.ssh/id_rsa
  2. ssh-keygen 到 /Users/jason/.ssh/id_rsa
  3. 将相应的“id_rsa.pub”添加到私有存储库“设置”=>“部署密钥”。

但还是不行。

【问题讨论】:

  • 我用来创建 SSH 的命令只是: ssh-keygen 。我应该添加一些标签吗?不确定。谢谢
  • 我会将此问题标记为重复,但我没有看到该选项。也许我的名声太低了。无论如何,我认为你应该看看这篇文章。 stackoverflow.com/questions/5212304/…
  • 此问题与您发布的@user985366 链接不重复。这里的问题是使用 git repo 的私有 repo 的获取标签超时。您评论的问题链接与身份验证和设置有关

标签: github jenkins


【解决方案1】:

我想问题可能是:当 Jenkins 尝试克隆一个 repo 或获取有关 repo 的信息时,它将使用一个名为 jenkins 的用户名。当然,该用户无权访问您的私人仓库。如果您从命令行执行此操作,您将使用自己的用户名,因此您可以成功克隆 repo。

您可以通过更改项目配置中的源代码管理设置来解决此问题。

我们正在做的是为 github repo 使用“用户名和密码”凭据。

  1. 输入“Repository URL”后,您可以单击“Credential”旁边的“Add”按钮添加“Username with password”凭据。
  2. 在弹出窗口中,为“种类”字段选择“用户名和密码”。
  3. 输入您的 Github 帐户的用户名和密码并保存。
  4. 然后在设置源代码管理时,可以在“凭据”字段中选择刚才添加的这个凭据。

希望这对你有帮助。

(使用凭证插件添加您的帐户和密码在某种程度上是安全的,因此您不必担心暴露您的帐户和密码)

【讨论】:

  • 我遇到了这个问题,我已经用凭据插件配置了我的仓库,仍然是同样的错误
猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
相关资源
最近更新 更多