【问题标题】:Let Jenkins build project from a Mercurial commit让 Jenkins 从 Mercurial 提交构建项目
【发布时间】:2013-10-18 09:52:00
【问题描述】:

有没有办法在单个存储库中指定挂钩?

现在我们已经在“/etc/mercurial/hgrc”文件中指定了钩子,但是每次它构建两次,并且它为每个存储库中的每次提交构建。

所以我们想为每个存储库指定一个构建。

这就是我们实现钩子的方式:

[hooks]
changegroup = curl --silent http://jenkins:8080/job/ourProject/build

它在 Ubuntu 服务器上。

【问题讨论】:

标签: jenkins mercurial-hook mercurial-commit


【解决方案1】:
  1. 选择构建触发器下的轮询SCM选项。
  2. 确保计划表为空。

您应该在 .hg 目录中创建 /home/user/mercurial/.hg/hgrc 并添加挂钩:

[hooks]
commit.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null
incoming.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null

【讨论】:

  • 第一步(勾选投票 SCM)对我来说很重要!谢谢。
  • 正如@Jason 所说,我也必须勾选 poll SCM 才能使其正常工作。我还必须删除任何时间表,否则它不会立即触发。
  • 另一个答案是 “确保您的 Jenkins 项目不进行轮询”。这不是矛盾吗?
【解决方案2】:

你应该确保

  1. 您的 Jenkins 项目没有投票

  2. 您为 Mercurial 挂钩使用正确的 notifyCommit URL:https://wiki.jenkins-ci.org/display/JENKINS/Mercurial+Plugin

【讨论】:

  • Jenkins 没有轮询,插件已安装,当我在浏览器中打开 url 时它可以工作,但它在推送时不起作用。
【解决方案3】:

好的,我找到了我要找的东西(我是赏金;我的案例是 Mercurial 的特定分支)。

在 main/origin 存储库中,放置一个带有所需构建脚本的钩子。 Pregroupchange 是维护传入的更改。我在主存储库上安装了一个 rhodecode,它本身也有自己的钩子。

这样,我仍然触发了 Jenkins,并且在触发 rhodecode 推送通知等之后仍然有变化。

[hooks]
pregroupchange = /path/to/script.extention

在脚本中,放置您想要的操作,这也是 Jenkins 的触发器。不要忘记在Jenkins:Job:Configure:Build Triggers:checkbox 中启用触发器远程构建+ 将您的desired_token 放在这里(对于我来说:Mercurial)。

因为不能只触发到 Mercurial 中的特定分支,所以我通过这种方式找到了分支名称。此外,要从远程脚本触发,您需要在 Jenkins 中授予整体匿名读取权限,或创建具有凭据的特定用户并将其放入触发 URL。

Bash 示例:

#!/bin/bash
BRANCH_NAME=`hg tip --template "{branch}"`
if [ $BRANCH_NAME = "branch_name" ]; then
   curl --silent http://jenkins_domain:port/path/to/job?token=desired_token
fi

对于原始问题:

通过这种方式,您只需为所需的分支执行一个构建。挂钩仅适用于主存储库,以防您使用多个克隆和多个开发人员。你可能有你的本地钩子,但不要为每个开发人员从你本地触发 Jenkins。仅在推送到来时(提交、传入和组更改)从主存储库触发 Jenkins。您的本地挂钩用于其他用途,例如电子邮件、日志、配置等。

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多