【问题标题】:Can a Hudson job poll a SCM without pulling code down?Hudson 的工作可以在不拉下代码的情况下轮询 SCM 吗?
【发布时间】:2011-03-28 16:36:21
【问题描述】:

我有一份工作,每次提交到存储库时我都想运行它。我想避免拉下这段代码,我只想要通知构建触发器。那么,有没有一种方法可以在构建时不下拉 SCM 中的某些存储库,或者有一种方法可以轮询 SCM 中不存在的内容以进行构建?

【问题讨论】:

  • 作业执行使用的代码应该从哪里来?
  • 代码已经存在,由 shell 脚本构建。一个更清楚的例子:每当有人提交时,我希望 Hudson 运行一个任意的 shell 脚本。在我的例子中,shell 脚本完成了整个构建,但它可以做任何事情。关键是还没有必要将代码拉入工作区。最终我们可以摆脱这个脚本,但现在更容易利用现有的生产构建脚本。

标签: build continuous-integration hudson


【解决方案1】:

您可以使用 post commit hook 来触发您的 hudson 工作。

【讨论】:

  • Hudson 无法检查 SCM 的更新,然后不拉取源。
  • @Peter - 不正确,Hudson Job 可以运行任何 shell 命令,根本不需要对源代码做任何事情。您可以从 post commit hook 触发任何 Hudson 作业。
  • 这将涉及更改 SVN 提交挂钩,这是我在开发 CI 服务器时希望避免的侵入性操作。
  • 这个问题专门询问 Hudson 自己检测更改(没有其他应用程序提示它,就像提交后所做的那样。)所以检查存储库,然后不要轮询源不是一个选择。因此,Hudson 不可能检查 SVN 但不提取源。所以我完全支持你实现它的方式。
【解决方案2】:

由于您想避免更改 SVN,您必须编写一个每隔一段时间(可能是每 5 分钟)执行一次的作业。此作业使用 windows bach 或 shell 脚本任务运行 svn 命令,以获取相关分支的当前修订版。如果有变化,您可以将作业的状态设置为不稳定。不要使用失败,因为您无法区分真正的失败和存储库更改。我认为有一个插件可以根据您输出的内容设置作业状态。

然后,您可以使用电子邮件扩展插件在每次修订更改时发送电子邮件。您可以从上一个(或者最好是上一个成功或不稳定的)作业中获取修订号。您可以存档包含作业修订号的文件,或者您可以使用描述设置器插件将作业的描述设置为修订。查看 Hudsons 远程 API,了解如何从以前的工作中获取信息。

因为您在白天经常工作。不要忘记删除旧的作业运行。但我会保留至少两天的历史记录,以防你的 svn 宕机 24 小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2019-01-14
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多