【问题标题】:How can I trigger a build of a certain revisions of a mercurial backed project in hudson?如何在哈德森触发构建一个 mercurial 支持的项目的某些修订?
【发布时间】:2011-07-19 14:08:32
【问题描述】:

我正在计划一个在 hudson 中触发构建的可变变更组挂钩。

项目被添加到队列中,当有空闲槽时,hudson 构建它。问题是,与此同时,其他人可能已经将代码推送到项目中,因此 hudson 将构建那个 newer 修订版(因为它运行类似“hg pull -u && build”之类的东西),而不是触发第一次构建时存储库的修订版。

这个问题有什么解决办法吗?也许使用参数化构建?如果它不适用于单个作业,也许我可以每次推送创建一个作业并将 mercurial url 设置为包含修订段?

感谢您的提示。

【问题讨论】:

    标签: mercurial hudson


    【解决方案1】:

    在你的钩子中,假设它是一个 shell 钩子,你应该获取你的 repo 提示的节点 ID,并将其作为参数传递给 Hudson(现在是 Jenkins)的 API。获取该值类似于:

    export NODE_TO_BUILD=$(hg --id --rev tip)
    

    然后,您可以使用您调用的任何格式将其作为参数传递给 Hudson 的 API:http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API

    并将 Hudson 工作调整为:

    hg pull && hg update $NODE_TO_BUILD && build
    

    【讨论】:

    • 嗯,但是我需要一份定制的工作,不是吗?目前我们正在使用 hudson mercurial 插件。
    • Hudson 应该将任何参数作为环境变量传递到您的构建脚本中,您可以在那里使用它们。您是否使用 Ant、Maven 或类似工具进行构建?它只需要检查 env 以获取要构建的 NODE id。
    • 我不知道如果触发构建,mercurial 插件会如何反应。我们目前使用导致 hg pull -u 的轮询。如果触发器执行相同的操作,那么我们需要在 pull -u 和我们的构建(我不知道我认为它是 shell..)之间添加一个步骤来运行 hg update $REVISION。
    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 2011-08-12
    相关资源
    最近更新 更多