10

我有一个带有一些代码(Java)的 Mercurial 存储库(在 Bitbucket 上),我想在基于云的 Jenkins 服务器(在 Jelastic,在 CentOS 上运行)上进行 CI 构建。我的问题是我无法在 Jenkins 服务器上正确安装 Mercurial。

Jenkins 构建失败并显示以下消息:

错误:无法克隆https://bitbucket_jenkins_user:some_password@bitbucket.org/repo_owner/my_repository因为找不到 hg;检查您是否正确配置了 Mercurial 安装

设置信息

  1. 这是一个私有的 Mercurial 存储库,托管在 Bitbucket
  2. 在 Bitbucket 中,我设置了一个服务来触发 Jenkins 构建,在推送发生后
  3. 我在 Mercurial 存储库中定义了一个特定的bitbucket jenkins 用户,它只有读取权限,并且使用简单的 https 身份验证登录
  4. Jenkins 在 CentOS 6 上托管在 Jelastic 云环境中的 Tomcat 7 上运行
  5. Mercurial 插件是通过 Jenkins 界面安装的,由 Manage plugins
  6. 构建配置为远程触发(由 Bitbucket 中定义的服务)
  7. 手动启动和从推送到存储库触发时构建结果相同

当我第一次这样做时,我的印象是在 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 的二进制文件获取?

4

1 回答 1

3

Mercurial 插件页面有一节介绍如何使用自动安装选项来使用 ArchLinux 软件包安装 Mercurial。

“该插件支持您的 Mercurial 安装的通用工具自动安装方法,尽管它不发布 Mercurial 版本目录。对于 Linux 机器(预安装 Python)的用户,您可以使用 ArchLinux 包。例如,在 /configure 下Mercurial 安装,添加您喜欢的任何名称的 Mercurial 安装,可执行文件 = INSTALLATION/bin/hg,自动安装,运行命令,标签 = linux(如果需要将其限制为配置有相同标签的从属设备),命令 = [ -d usr ] || wget -q -O - http://www.archlinux.org/packages/extra/i686/mercurial/download/ | xzcat | tar xvf - (或 .../x86_64/... 对于 64 位从站),工具 Home = usr,并配置一个将此安装绑定到 Linux 从站的作业。”

https://wiki.jenkins-ci.org/display/JENKINS/Mercurial+Plugin

于 2013-09-10T14:51:06.627 回答