这个问题很长而且涉及面很广,所以我将从一个简短的概述开始,然后详细展示我尝试过的所有内容以及我对它们为什么不起作用以及我做错了什么的问题。
概述
我正在尝试在 Hudson 上为 BitBucket 上的私有存储库上的源代码设置构建作业。Stack Overflow 上有很多类似的问题,但由于种种原因,没有一个能满足我的需求。
我想使用 https 而不是 ssh 访问它,但似乎没有办法在 Hudson 中使用 https 访问它,而且网络上的每个人似乎都在 ssh 上出售。所以我试图让它与 ssh 一起工作,但徒劳无功。
所以,我的中心问题是:
如何访问 Hudson 的私有 BitBucket 存储库?
笔记
- 我意识到詹金斯更好,但我正在使用已建立的哈德逊服务器。拜托,没有关于切换到 Jenkins 的建议。
我将 Jenkins 包含在标题中并作为标签,因为很可能任何解决方案都适用于两者。 - 由于遇到了几个死胡同,我还问了几个“子问题”,详细说明了上面的核心问题——如果你能就这些问题给我启发,我将不胜感激。
问题
我使用的是 Hudson 的 Git 插件,配置如下:
由于这是一个私有存储库,因此它需要以某种方式进行身份验证。所以当然,构建失败了。以下是堆栈跟踪的相关部分:
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException:
Could not clone https://TJamesBoone@bitbucket.org/OtherUser/projectname.git
Caused by: hudson.plugins.git.GitException:
org.eclipse.jgit.api.errors.TransportException:
https://TJamesBoone@bitbucket.org/OtherUser/projectname.git: not authorized
问题: 为什么 Hudson 的 Git 插件在项目配置中没有用于私有存储库身份验证的位置?毕竟,SVN 插件可以处理身份验证。有充分的理由吗?
我尝试过的事情
我将项目重新配置为使用 ssh url 而不是 https url:
然后,我使用Atlassian的本教程创建了一个 ssh 密钥。然后我将 ssh 密钥添加到 BitBucket 上的项目中。
我再次尝试构建,并得到了这个堆栈跟踪(相关部分):
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException:
Could not clone git@bitbucket.org:OtherUser/projectname.git
Caused by: hudson.plugins.git.GitException:
org.eclipse.jgit.api.errors.TransportException:
git@bitbucket.org:OtherUser/projectname.git:
UnknownHostKey: bitbucket.org. RSA key fingerprint is
97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
然后我想我应该尝试使用两个可用的 ssh 插件配置 Hudson,即 Publish Over SSH 插件和 SSH 插件(我在这里了解到)。
但我不知道如何使用它们。首先,我假设我不需要 Publish Over SSH 插件,因为我不想发布,我只是想拉。其次,SSH 插件对我不起作用。我试过这样做:
但这里的问题是它无法连接。此外,它需要一个端口号,如果我什么都不输入,则默认使用 22。我不知道该怎么办。
问题: 我什至需要配置一个 SSH 站点才能成功地从这个私有 BitBucket 存储库中放入吗?
概括
如何访问 Hudson 中的私有 BitBucket 存储库?
在我的 Hudson 构建中,我需要能够从这个私有 BitBucket 存储库中提取。我似乎无法让它与 ssh 一起使用,我什至不知道是否可以使用 https,因为我没有地方输入密码。如果有人可以帮助我,我会很高兴。