6

我已经在这个项目上工作了大约一个星期,我一直在寻找 2 天没有任何明确的在线解释。对于学校作业,我们需要使用以下程序设置构建服务器:

  • Maven,作为我们的构建工具。
  • Mercurial 作为我们的版本控制系统。
  • Java (JRE)、javac 和 javadoc。
  • JUnit 用于单元测试。
  • 詹金斯(带有 JDepend 插件)。

我们需要创造 3 个工作,其中 1 个工作是:

每次编辑 Mercurial 的(本地)存储库时,都需要开始构建。(意思是:每个 Mercurial 提交都需要被 Jenkins 检测到。这个“检测”需要每 1 分钟触发一次)

我们需要使用的工具是:JavacMaven作为我们的构建工具,当然还有Mercurial

这一切都发生在 Ubuntu 环境中。由于我(根本)不熟悉 Linux,所以我不知道如何做到这一点。

我不是要求一个现成的解决方案,而是要求一些“提示”来理解诸如 Mercurial 'Hooks' 之类的东西,我需要(做)什么才能让这份工作在 Jenkins 中工作,等等。我所做的一切find online 比较模糊,使用 python 的示例。

如此具体:可能会欢迎一些指导:)感谢每一位帮助!

4

3 回答 3

13

在有人推送到您的仓库后,在 Jenkins 上触发构建的最有效方法是使用 mecurial 中的changegroup 挂钩

另一方面,Jenkins 允许通过使用特殊令牌调用作业的 URL 来远程触发构建。必须在 Jenkins 上的作业中配置此触发器和相应的令牌:

构建触发器配置

将放入 repos .hg/hgrc 文件中的 mercurial 挂钩可以定义如下:

[hooks]
changegroup = curl --silent http://your.jenkins.server.url/jenkins/job/<YOURJOBNAMEHERE>/build?token=Foo

这个钩子使用curl命令行工具来调用你的 jenkins 作业的 URL,并使用允许远程触发作业的定义令牌。当然,Curl 必须安装在你的 linux 机器上。

于 2012-11-07T22:08:14.633 回答
4

听起来您的教授希望 Jenkins 轮询 Mercurial 存储库的更改(“每 1 分钟触发一次”)。当您设置 Jenkins 作业时,名为“构建触发器”的部分将有一个投票选项。那就是你想要的那个。

更好的解决方案是让 Mercurial 告诉 Jenkins 有关更改,因为轮询通常是一个坏主意(即使您几天没有检查任何内容,Jenkins 仍然每分钟询问是否有任何更改)。您可以查看本书以获取有关如何编写 Mercurial 挂钩的示例,也可以使用我编写的Python 脚本。

于 2012-11-07T22:02:36.447 回答
0

要在推送到 Bitbucket 上的 Mercurial 存储库时触发 Jenkins 构建,您可以转到存储库的管理(单击齿轮)并选择服务。在那里,您可以使用四个参数定义 Jenkins 服务:

  1. Endpoint:Jenkins 服务器的 URL。
    • 对于安全的 Jenkins 服务器,您需要指定用户名和 api 令牌。api 令牌由 Jenkins 在“管理用户”/“配置”页面上为特定用户生成。
  2. 模块名称:可选参数,根据推送的内容选择性地触发构建
  3. 项目名称:Jenkins作业的名称
  4. Token:可选参数,与选择“Trigger builds remote (eg, from scripts)”时在Jenkins作业上定义的Authentication Token相同

(我想这只是詹姆斯在 2012 年 11 月 7 日的回复中提到的定义“变更组挂钩”的一种 gui 方式。)

于 2013-07-19T14:06:10.670 回答