作为预构建步骤,我如何触发 hudson 的另一项工作?

Posted

技术标签:

【中文标题】作为预构建步骤,我如何触发 hudson 的另一项工作?【英文标题】:How do I trigger another job from hudson as a pre-build step? 【发布时间】:2011-07-26 02:50:38 【问题描述】:

如何从 hudson 触发另一个作业作为预构建步骤?

【问题讨论】:

【参考方案1】:

您可以在http://wiki.jenkins-ci.org/display/JENKINS/Join+Plugin使用插件

基本上你创造了 3 个工作:

A = 您的预构建步骤

B = 你的主要工作

C = 你的触发器。

您“构建” C。它调用 A,一旦 A 成功,它就会调用 B。插件页面为您提供更多信息。这个插件的好处是您可以拥有任意数量的预构建作业。

在我们的 main 运行之前,我们实际上有一组 5 个预构建作业。

================================================ =

如果你不想尝试:

如果您使用的是 Linux,您可以在“shell”脚本中执行以下操作:

wget http://yourserver/hudson/job/MyJob/build?delay=0sec

这将触发作业。这样做的坏处是它不会等待工作完成。

【讨论】:

谢谢萨加尔!!这个“坏部分”正是我想要的。但是这个 Rest API 是如何处理身份验证的呢?因为我的 Jenkins 被配置为在任何操作之前请求登录。 @NaderA.Jabbar Jenkins ReST API 实际上支持使用身份验证令牌进行身份验证。您可以使用脚本中的每个作业令牌或您自己的身份验证 API 令牌。查看 URL http://yourserver/hudson/job/MyJob/api 以获取有关使用 API 调用构建的更多信息。此外,在“执行构建”下,有两个链接。检查用于调用带有参数的构建的那个。【参考方案2】:

有一个Parameterized Trigger Plugin,可以在“添加构建步骤”菜单中启用“在其他项目上触发/调用构建”。

【讨论】:

谢谢!这是我一直在寻找的选项,但插件页面上没有明确提及。 文档确实提到了“使用作为构建步骤”,尽管您需要意识到这是您所需要的,这不是很明显,当然不是插件名称。 只是添加了“在其他项目上触发/调用构建”部分应该首先使用其他容器,例如“执行 windows 批处理命令”【参考方案3】:

其实我知道怎么回答你的问题: 这是您需要的插件:

PreBuild

它并不广为人知,但它可以满足您的需求。

它基本上在您选择的构建之前运行一个构建。例如:您希望 A 在 B 之前运行。 你点击“运行B”它会在运行B之前执行A。

专业版: -> 用途广泛 -> 易于使用

缺点: -> 如果预构建失败,则不支持/选项(例如,如果预构建失败,则不构建) -> 开发似乎一点也不活跃。

在这里你可以看到它的样子

编辑

这个答案是从 12 年回来的,我知道你对它投了反对票,但当时这是一个可靠的解决方案,现在我确信还有其他插件可以完成这项工作。

【讨论】:

你可以使用支持该功能的旧版本 Jenkins 这是一年前写的,当然不是一个生动的建议,而是一个解决方案。【参考方案4】:

我有同样的问题,我找到了解决办法:

我使用的是詹金斯版本 jenkins-1.452-1.1。

假设我有工作 A 和 B,而工作 A 依赖于工作 B。在构建工作 B 时,我希望 A 自动触发,并且 B 被阻塞,直到 A 构建成功。

在构建部分定义构建配置时,我添加了“在其他项目上触发构建”。然后填写表格。

【讨论】:

我在我的项目中有同样的事情要做,我正在使用 Jenkins 版本。 1.479,我在作业配置“构建触发器->构建其他项目后构建”中启用了以下功能,但这对我不起作用(不执行依赖项目,我也想知道如何将参数传递给依赖项目)跨度>

以上是关于作为预构建步骤,我如何触发 hudson 的另一项工作?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins持续集成——安装配置

我如何从另一台服务器的另一个数据库中获取数据? [复制]

仅当特定文件集发生更改时如何触发构建

如何在 Hudson 中运行 VB6 项目?

如何使用 Hudson 构建 Play 项目?

如何制作 C 宏预构建预处理器?