如何将Jenkins与私有Github仓库连接?

3
我的目标是将一个私有Github仓库拉取到Jenkins上。
以下是一些背景信息:
  1. 操作系统为MacOS
  2. Jenkins本地托管,网址为localhost:8080
  3. 在Jenkins中安装了Git插件和Github插件。
  4. 如果我把仓库变成公共的,在Jenkins上就一切正常。
  5. 从命令行中,我可以使用相同的凭据“git clone”私人仓库。
但当我把它变成私有仓库并将其用作Jenkins源时,它就会出问题了。
错误信息如下:
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。我需要添加一些标签吗?我不太确定。谢谢。 - 翁鹏飞
我想将这个问题标记为重复,但我没有看到那个选项。也许我的声望太低了。无论如何,我认为你应该查看这篇帖子。https://dev59.com/W2435IYBdhLWcg3wyzQJ - user985366
这个问题不是你发布的链接@user985366的重复。这里的问题是使用git repo时私有repo的fetch标签超时。你评论的问题链接与身份验证和设置有关。 - Ashwin G
3个回答

2
我猜问题可能是这样的: 当Jenkins尝试克隆repo或获取关于repo的信息时,它会使用一个名为jenkins的用户名。当然,这个用户没有访问您的私有repo的权限。如果你用命令行操作,你将使用自己的用户名,因此你可以成功地克隆一个repo。
您可以通过更改项目配置中源代码管理的设置来解决这个问题。
我们要做的是在github repo中使用“带用户名和密码”的凭据。
  1. 在输入“Repository URL”后,您可以点击“凭据”旁边的“添加”按钮以添加“带用户名和密码”的凭据。
  2. 在弹出的窗口中,选择“带用户名和密码”作为“种类”字段。
  3. 键入您的Github帐户的用户名和密码并保存。
  4. 然后,您可以在设置源代码管理时选择您刚刚添加的凭据。
希望这可以帮助您。
(使用凭据插件添加您的帐户和密码在某种程度上是安全的,所以您不必担心暴露您的帐户和密码)

我遇到了这个问题,而且我已经使用凭证插件配置了我的仓库,但是还是出现了同样的错误。 - Ashwin G

1
只需在您的git网址之前使用用户名和访问令牌,如下所示:
https://git用户名:git访问令牌@git网址

0

你需要使用个人访问令牌(PAT)在Jenkins中配置GitHub凭据

  • 首先,你需要从你的GitHub账户生成PAT,然后在Jenkins中进行设置。

进入Jenkins仪表盘 --> 管理Jenkins --> 凭据

设置你的私有仓库凭据,现在你可以开始使用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接