Jenkins - 如何在不重新运行作业的情况下运行构建后操作?

时间:2013-03-03 22:13:07

标签: jenkins continuous-integration

我有一个冗长的Jenkins工作,后期构建操作失败。

如何在不重新运行整个作业的情况下重复运行构建后操作?

3 个答案:

答案 0 :(得分:4)

如果不能将作业分成2个作业,您可以考虑使用 https://wiki.jenkins-ci.org/display/JENKINS/Promoted+Builds+Plugin
(我相信这是预装Jenkins的)。这将使“促销”步骤成为一个单独且可重复的过程。您可以将其配置为在构建后自动运行,然后在需要时手动按需运行。

如果您的构建后步骤需要访问构建工件,则需要使用https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin将构建工件复制到促销的工作区。

另一种解决方案是基于参数跳过构建步骤。 有一个名为 SkipBuild 选择参数。将可能的值设置为TRUE / FALSE,默认为FALSE

构建步骤中,在实际构建之前,检查 SkipBuild 是否设置为TRUE。如果为TRUE,则退出0,如果为FALSE(默认值),则运行build命令。

这样,自动构建执行将始终运行构建步骤。但您也可以手动运行构建并选择“SkipBuild = TRUE”以跳过构建步骤并直接进行构建后操作。如果您需要跳过一些构建后的操作,则还需要在那里实现此 SkipBuild 参数。

但是,随着构建的后续执行,即使使用“SkipBuild = TRUE”,仍然会执行SVN签出,因此您的工作区可能会发生变化。

答案 1 :(得分:1)

根据您的构建步骤,您可以“跳过”它们。

例如,我的构建步骤是powershell和windows批处理文件。

如果我想跳过一个步骤,我只需添加'exit 0'作为powershell或batch命令的第一行。

请注意,这仍将导致其他预构建步骤,例如工作区清理和scm签出正在运行。

答案 2 :(得分:0)

根据操作的不同,一个原始选项可能只是将其拆分为独立作业,由原始作业触发。这样,您就可以手动重新运行它。

要在两个作业之间共享工件或工作区,需要考虑以下插件: