关于java:使用Bitbucket配置Jenkins

Configuring Jenkins with Bitbucket

我似乎在尝试将 Jenkins(Ubuntu 的 EC2 AWS 实例)与 Bitbucket 链接时遇到了困难。

每当我尝试构建我的项目(我已经在 J??enkins 上安装了 git 插件)时,我都会得到...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Building in workspace /var/lib/jenkins/jobs/Google adwords/workspace
Checkout:workspace / /var/lib/jenkins/jobs/Google adwords/workspace - hudson.remoting.LocalChannel@2c473996
Using strategy: Default
Cloning the remote Git repository
Cloning repository origin
ERROR: Error cloning remote repo 'origin' : Could not clone git@bitbucket.org:DAVID99WORLD/assessme.git
hudson.plugins.git.GitException: Could not clone git@bitbucket.org:DAVID99WORLD/assessme.git
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:268)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1122)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1064)
    at hudson.FilePath.act(FilePath.java:842)
    at hudson.FilePath.act(FilePath.java:824)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1064)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1256)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494)
    at hudson.model.Run.execute(Run.java:1502)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:236)
Caused by: hudson.plugins.git.GitException: Command"git clone --progress -o origin [email protected]:DAVID99WORLD/assessme.git /var/lib/jenkins/jobs/Google adwords/workspace" returned status code 128:
stdout: Cloning into '/var/lib/jenkins/jobs/Google adwords/workspace'...

stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

很好 - 看起来它正在尝试通过 ssh 但找不到密钥。所以我试图生成密钥,在 ~/.ssh 下我有文件 authorized_keysknown_hosts 但根据此处的文档...

https://confluence.atlassian.com/display/BITBUCKET/如何在您的 bitbucket 帐户上安装公钥

我应该在 ~/.ssh 下有一个名为 id_rsa

的文件

我一直在关注文档...

https://confluence.atlassian.com/display/BITBUCKET/通过bitbucket使用SSH协议

但它看起来几乎完成了一半,或者我错过了将密钥放入正确文件的位置。

首先 - 我的假设是否正确,这是一个 ssh 问题?其次,如果是,有谁知道如何让密钥匹配,以便 Jenkins 可以进行拉取和构建?

编辑:我认为这是一个 ssh 问题,因为问题 Jenkins Build Using Git with Deploy Key 是相关的,但我使用的是 bitbucket 而不是 github。


您需要生成密钥文件以上传到您的 BitBucket 帐户。从运行 Jenkins 的用户执行以下操作:

1
ssh-keygen -t rsa

采用默认密钥文件位置并将密码留空。然后,您将拥有要上传到 BitBucket 的 ~/.ssh/id_rsa.pub 文件。


我正在阅读这篇文章,因为我遇到了同样的问题,我现在发现了一些有用的东西。

我的配置
我有一个从属构建服务器(Win7-64 机器),我在其中安装了标准 Git(在安装过程中,我选择了第三个选项:"运行 Git 并从 Window 命令提示符中包含 Unix 工具"。)
Jenkins 配置了 Java Web Start。

我注意到如果我从 Git shell 执行命令

ssh -vT [email protected]

我可以通过获取消息的服务器进行身份验证

您可以使用 git 或 hg 连接到 Bitbucket。shell访问被禁用。

但是如果我从 cmd 执行相同的命令,我会得到

权限被拒绝(公钥)

我不确定,但我认为 Git 插件从窗口 shell 执行命令,而不是使用 git shell(如我所料),所以这可以确定构建中的身份验证问题。

在 Git 插件文档中有一个名为"Some windows fun"的小部分,建议将 .ssh 用户的文件夹复制到 Git 文件夹下(在我的情况下为 C:\\\\\\\\Program Files (x86) \\\\\\\\Git).

这样做之后,我从 windows shell 运行 ssh -vT [email protected] 并且它工作(如果它不工作,尝试重新启动 shell 或整个机器)。
然后我从 Jenkins 运行构建,终于成功了。

我希望这会有所帮助。

祝你好运。