我有两个工作:
- 上传
- 启动实例
我想让Launch-instance依赖于另一个,以便触发Launch-instance自动导致Upload首先运行。
我可以使用内置的 Jenkins 功能或插件来实现这一点吗?
请注意,我不希望Upload总是触发Launch-instance,这就是 Launch-instance 上的“构建其他项目后构建”选项的作用。我想要的更类似于depends
属性在Ant中的工作方式。
我有两个工作:
我想让Launch-instance依赖于另一个,以便触发Launch-instance自动导致Upload首先运行。
我可以使用内置的 Jenkins 功能或插件来实现这一点吗?
请注意,我不希望Upload总是触发Launch-instance,这就是 Launch-instance 上的“构建其他项目后构建”选项的作用。我想要的更类似于depends
属性在Ant中的工作方式。
您是否尝试过参数化触发器插件?
您可以将其用作构建步骤,并标记“阻止直到触发的项目完成构建”复选框。这应该正是您正在寻找的。
啊哈,找到了!在这里,我建立在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”,这仍然有效。
通过 wget 运行依赖作业不是一个通用的解决方案。由于作业是异步运行的,因此您的 Launch-job 不会挂起并等待 Upload 作业完成。使用睡眠只是一个肮脏的黑客,在大多数情况下不是一个选择......恕我直言,最好的解决方案是使用: http ://wiki.jenkins-ci.org/display/JENKINS/Join+Plugin
您可以使用下游或上游依赖项。您应该在项目的配置部分中构建其他项目和/或构建后操作后使用“构建触发器”-> 构建。