让詹金斯(哈德森)的工作取决于另一份工作

时间:2010-04-20 11:02:04

标签: hudson build-automation jenkins

我有两份工作:

  1. 上传
  2. 启动实例
  3. 我想让 Launch-instance 依赖于另一个,因此触发 Launch-instance 会自动导致 Upload 首先运行。

    我可以使用内置的Jenkins功能或插件来实现这一目标吗?

    请注意,我希望上传始终触发 Launch-instance ,这就是“构建其他项目后构建”的内容 Launch-instance 上的选项可以。我想要的更多类似于Ant depends属性的工作方式。

5 个答案:

答案 0 :(得分:25)

您是否尝试过Parametrized Trigger Plugin

您可以将其用作构建步骤,并选中“阻止直到触发的项目完成构建”的复选框。这应该是你正在寻找的。

答案 1 :(得分:5)

啊,啊,找到了!在这里,我建立在 miki's answer 的基础上,这显示了方式,但并没有完全解决这个问题。

正如在 Spanish-language article about launching Hudson builds 中所说的那样,该链接来自于miki链接到的Hudson Remote access API page的评论:

  

Enlasección“构建触发器”[...] marcamos la   opción“触发器远程构建(例如,   来自剧本)“。Al marcarestaopcióvemoscomo aparece el cuadro de texto”Authentication Token“.Aquístaterremosel nombre del tokendelutenticación。

alt text http://www.adictosaltrabajo.com/tutoriales/hudsonSubversionPush/hudsonSubversionPush-01.png

(了解西班牙语的好处似乎开始实现......: - )

因此,事实证明,Hudson提供了一个方便的内置选项,用于远程触发构建。在构建触发器部分(在我的案例中为上传作业)中,您可以启用远程构建并设置身份验证令牌(请参见上面的屏幕截图)。然后,您可以通过访问包含该令牌的特定URL来启动构建。在我的例子中, Launch-instance 的第一个构建步骤如下所示:

wget http://[hudson-url]/job/Upload/build?token=TEST
sleep 10

即使禁用匿名构建并且只是尝试访问构建URL,也会产生“403 Forbidden”。

答案 2 :(得分:2)

通过wget运行相关作业不是一般解决方案。由于作业异步运行,因此启动作业不会挂起并等待上载作业完成。使用睡眠只是一个肮脏的黑客,并不是大多数情况下的选择... 恕我直言最好的解决方案是使用:http://wiki.jenkins-ci.org/display/JENKINS/Join+Plugin

答案 3 :(得分:1)

通过使用wget作为第一个构建步骤调用其build URL来构建上传怎么样?然后添加 Launch-instance 的牛肉构建步骤。

或者对于更高级的方法,也许使用Remote access API

答案 4 :(得分:0)

您可以使用下游或上游依赖项。你应该使用“构建触发器” - >  在项目的配置部分中构建和/或构建后操作之后构建。

相关问题