0

当开发人员从本地存储库推送到中央远程存储库时,我想使用 mercurial 挂钩来触发回归构建(在 Jenkins 中)。

在路径/to/repo/.hg/hgrc

[hooks]
changegroup = python:jenkins.py:trigger_build

和詹金斯.py:

def trigger_build(ui, repo, source, hooktype, node, **Kwargs):
    ...
    changeset_to_build = node
    ...

但在这种情况下,节点指的是变更组中最早的变更集,我想针对最新的开始构建和测试。我有一个使用的解决方法:

def trigger_build(ui, repo, source, hooktype, node, **Kwargs):
    ...
    changeset_to_build = repo['default'].hex()
    ...

这会得到适当的变更集,但我不确定这是最好的方法。我缺少一个更标准的成语吗?

谢谢

4

1 回答 1

1

在我看来,repo['default']它始终是默认分支的负责人。如果开发人员希望构建其他分支或默认分支未命名为default ,这可能是一个问题。

在基于 bash 和revsets的钩子中,我将使用以下内容:

#!/bin/bash
changeset_to_build=$(hg log --rev "heads(${HG_NODE}:)" --limit 1 --template "{node}")

这将是 HG_NODE 和 tip 之间没有子变更集的第一个节点;所以即使changegroup没有从默认分支开始,jenkins应该建立的也是changegroup的负责人。

于 2014-05-09T17:03:48.273 回答