validationGithub私有存储库的Jenkins CI

我想Jenkins自动从Github上托pipe的私有存储库中获取数据。 但我不知道如何完成这项任务..试了一下文档,为jenkins用户生成ssh-key,以及我所能看到的一切:“无法克隆回购”。 我检查过url – 它们是有效的。

任何线索,也许你知道一些文档/博客/无论是描述这种东西?

也许GitHub对部署密钥的支持是你正在寻找的? 引用该页面:

什么时候应该使用部署密钥?

很简单,当你有一台服务器需要访问一个私人回购。 该密钥直接连接到存储库而不是个人用户帐户。

如果这是您已经尝试的,而且不起作用,那么您可能需要更新您的问题,更多关于正在使用的URL,密钥文件的名称和位置等的详细信息。


现在的技术部分:如何使用Jenkins的SSH密钥?

如果你有一个jenkins unix用户,你可以将你的部署密钥存储在~/.ssh/id_rsa 。 当jenkins试图通过SSH克隆回购,它会尝试使用该密钥。

在某些设置中,您不能运行Jenkins作为自己的用户帐户,也可能不能使用默认的ssh密钥位置~/.ssh/id_rsa 。 在这种情况下,您可以在不同的位置创build一个密钥,例如~/.ssh/deploy_key ,并configurationssh以使用~/.ssh/config的条目:

 Host github-deploy-myproject HostName github.com User git IdentityFile ~/.ssh/deploy_key IdentitiesOnly yes 

因为所有使用git@github.com向所有Github存储库进行身份validation,并且不希望将上述密钥用于与Github的所有连接,所以我们创build了一个主机别名github-deploy-myproject 。 你的克隆url现在变成了

 git clone github-deploy-myproject:myuser/myproject 

这也是你作为版本库URL到Jenkins的内容。

(请注意,您不能ssh://放在前面才能使用)。

有一件事情让我这个工作是确保github.com~jenkins/.ssh/known_hosts

如果您需要jenkins访问更多的1个项目,您将需要:
1.将公钥添加到一个github用户帐户
2.将此用户添加为所有者(以访问所有项目)或作为每个项目的协作者。

一个系统用户的许多公钥将无法工作,因为GitHub将find第一个匹配的部署密钥,并将发回错误,如“错误:授权给用户/ repo2拒绝给user / repo1”

http://help.github.com/ssh-issues/

Jenkins在系统上创build一个用户Jenkins。 必须为Jenkins用户生成ssh密钥。 这里是步骤:

 sudo su jenkins -s /bin/bash cd ~ mkdir .ssh // may already exist cd .ssh ssh-keygen 

现在,您可以使用SSH密钥创buildJenkins凭证在Jenkins仪表板添加凭证

select这个选项

私钥:从jenkins大师〜/ .ssh

我有一个与gitlab类似的问题。 原来我限制了可以通过sshlogin的用户。 这不会影响github用户,但如果人们最终在这里出现gitlab(等)问题,请确保将git添加到/etc/ssh/sshd_configAllowUsers设置:

 # Authentication: LoginGraceTime 120 PermitRootLogin no StrictModes yes AllowUsers batman git 

sergey_mo答案的替代scheme是在jenkins服务器上创build多个ssh密钥。

(虽然sergey_mo的回答的第一位评论者说,这可能比pipe理单个密钥对更加痛苦。)