Jenkins在mercurial commit之后构建

时间:2012-11-07 21:48:53

标签: maven ubuntu mercurial jenkins hudson

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

  • Maven,作为我们的构建工具。
  • Mercurial作为我们的版本控制系统。
  • Java(JRE),javac和javadoc。
  • JUnit进行单元测试。
  • Jenkins(使用JDepend插件)。

我们需要创建3个职位,其中1个职位是:

  

每次编辑Mercurial的(本地)存储库时,都需要启动构建。 (含义:Jenkins需要检测每个Mercurial提交。这个'检测'需要每1分钟触发一次)

我们需要使用的工具包括: Javac Maven 作为构建工具, Mercurial 当然。

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

我不是要求提供一个现成的解决方案,但我宁愿要求一些'提示'来理解像Mercurial 'Hooks'这样的东西,我需要(做)得到的东西这项工作在Jenkins等工作。我在网上找到的所有东西都很模糊,并使用python的例子。

如此具体:可能会欢迎一点指导:)感谢所有帮助之手!

3 个答案:

答案 0 :(得分:13)

在有人推送到您的回购邮件后触发Jenkins构建的最有效方法是在mecurial中使用changegroup hook

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

Build trigger configuration

将放在repos .hg / hgrc文件中的mercurial钩子可以定义为:

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

此挂钩使用curl命令行工具使用允许远程触发作业的已定义标记来调用jenkins作业的URL。当然,必须在你的linux盒子上安装Curl。

答案 1 :(得分:4)

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

更好的解决方案是让Mercurial告诉Jenkins有关更改,因为轮询通常是一个坏主意(即使你几天都没有检查任何东西,Jenkins仍然每分钟都要求 如果有的话已经改变)。您可以查看the book有关如何编写Mercurial挂钩的示例,或者您可以使用我写的Python script

答案 2 :(得分:0)

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

  1. 端点:Jenkins服务器的URL。
    • 对于安全的Jenkins服务器,您需要指定用户名和api令牌。 api令牌由Jenkins为特定用户在“管理用户”/“配置”页面上生成。
  2. 模块名称:可选参数,根据推送的内容选择性地触发构建
  3. 项目名称:Jenkins作业的名称
  4. 令牌:可选参数,与选择“远程触发构建(例如,从脚本)”的Jenkins作业上定义的身份验证令牌相同“
  5. (我认为这只是詹姆斯在2012年11月7日回复中提到的定义“变更组挂钩”的一种方式。)

相关问题