我有一个带有一些代码(Java)的 Mercurial 存储库(在 Bitbucket 上),我想在基于云的 Jenkins 服务器(在 Jelastic,在 CentOS 上运行)上进行 CI 构建。我的问题是我无法在 Jenkins 服务器上正确安装 Mercurial。
Jenkins 构建失败并显示以下消息:
错误:无法克隆https://bitbucket_jenkins_user:some_password@bitbucket.org/repo_owner/my_repository因为找不到 hg;检查您是否正确配置了 Mercurial 安装
设置信息
- 这是一个私有的 Mercurial 存储库,托管在 Bitbucket
- 在 Bitbucket 中,我设置了一个服务来触发 Jenkins 构建,在推送发生后
- 我在 Mercurial 存储库中定义了一个特定的bitbucket jenkins 用户,它只有读取权限,并且使用简单的 https 身份验证登录
- Jenkins 在 CentOS 6 上托管在 Jelastic 云环境中的 Tomcat 7 上运行
- Mercurial 插件是通过 Jenkins 界面安装的,由 Manage plugins
- 构建配置为远程触发(由 Bitbucket 中定义的服务)
- 手动启动和从推送到存储库触发时构建结果相同
当我第一次这样做时,我的印象是在 Jenkins 中安装 Mercurial 插件就足够了,它还会安装所需的 Mercurial 二进制文件,以便能够连接到存储库并获取代码。我意识到我错了,在 Manage Jenkins / Configure System 页面上我需要指定我的 Mercurial 安装。
问题
- 是否可以在没有 ssh 访问并执行“yum install mercurial”的情况下创建 Mercurial 安装?
- 在 Jenkins 界面中,选择“自动安装”选项时可以指定什么?
- 在定义安装程序时,我尝试了“提取 zip/tar.gz”选项,但我可以写什么作为“二进制存档的下载 URL”?
- Jenkins 还提供了“运行命令”的安装程序选项。那可能是什么命令,可能是“yum install ...”或“rpm ...”?
由于我的服务器是基于云的,因此获得 ssh 访问权限是我希望避免的付费插件。但如果这是我唯一的选择,我当然会这样做,从而可以访问服务器上正在运行的命令。然而,在 Centos 上运行“yum install mercurial”似乎只提供了 1.4 版本的 Mercurial。我写这篇文章时的当前版本是 2.6.3,我是否需要下载源代码并自己编译,或者是否有可能在某处将其作为 Centos 的二进制文件获取?