24

我有两个工作:

  1. 上传
  2. 启动实例

我想让Launch-instance依赖于另一个,以便触发Launch-instance自动导致Upload首先运行。

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

请注意,我希望Upload总是触发Launch-instance,这就是 Launch-instance 上的“构建其他项目后构建”选项作用。我想要的更类似于depends属性在Ant中的工作方式。

4

5 回答 5

27

您是否尝试过参数化触发器插件

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

于 2011-09-21T08:44:52.733 回答
5

啊哈,找到了!在这里,我建立在miki 的答案的基础上,该答案显示了方法,但并没有为我完全解决这个问题。

正如它在关于启动 Hudson 构建的西班牙语文章中所说,该文章链接到来自miki 链接到的 Hudson远程访问 API 页面的评论:

En la sección “构建触发器” [...] marcamos la opción “触发器构建远程(例如,从脚本) ”。Al marcar esta opción vemos como aparece el cuadro de texto "Authentication Token"。Aquí potremos el nombre del token de autenticación。

替代文字
(来源: adictosaltrabajo.com )

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

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

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

即使匿名构建被禁用并且简单地尝试访问构建 URL 会产生“403 Forbidden”,这仍然有效。

于 2010-04-20T12:47:52.317 回答
2

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

于 2011-11-19T19:45:40.643 回答
1

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

或者对于更高级的方法,也许使用远程访问 API

于 2010-04-20T12:21:46.453 回答
0

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

于 2010-04-20T11:34:23.637 回答