詹金斯发布步骤和行动 - 有什么区别

时间:2014-10-29 10:29:08

标签: jenkins

可能听起来像一个非常基本的问题 - 但我找不到任何解释Jenkins为什么提供构建后步骤以及行动的文章。

在Jenkins中 - 我确实看到后期制作步骤与行动的选项不同,但

  • 执行的顺序是什么?
  • 我们应该何时使用哪个选项?
  • 最佳做法是什么?

3 个答案:

答案 0 :(得分:29)

乍看之下,这里是詹金斯'工作流程(没有额外的插件)

  1. [根据需要,根据需要] 安装工具(例如JDK,Ant,Maven等)
  2. [可选] 执行SCM结帐,(例如SVN或Git)。
  3. 执行构建步骤,(例如构建Ant项目,编译代码等)。
  4. [可选] 执行构建后步骤,(例如存档工件,发送电子邮件等)。
  5. 有些插件可以在安装工具后立即执行操作,例如Pre-SCM-stepEnvInject插件。还有一些插件可以添加更多可能的构建步骤和构建后步骤。

    构建和构建后步骤之间的区别部分基于逻辑分离,部分基于工作流配置。

    从逻辑角度来看,当你构建/编译一个项目时,那就是" Build"步骤,而当你存档工件,因为这发生在构建之后,那就是"构建后"步骤

    但是还有工作流配置注意事项,它与以下内容有关:

    • " 何时执行构建失败"和
    • " 构建状态" (例如成功,不稳定,失败)

    多个" Build"詹金斯:

    • 执行第一个构建步骤
    • 检查第一个构建步骤的退出代码
      1. 如果退出代码为0(成功),则Jenkins继续下一步构建步骤(如果有)
      2. 如果退出代码不是0(失败),则Jenkins 标记为FAILED继续 标记为构建后操作。< / LI>
    • Jenkins执行构建后步骤(无论构建是否标记为FAILED

    所以,换句话说:

    • 如果构建步骤成功,Jenkins可以执行以下构建步骤(如果有)。
    • 如果构建步骤失败,Jenkins将不会执行以下构建步骤。
    • 如果所有构建步骤成功,Jenkins将标记构建SUCCESS
    • 如果任何构建步骤失败,Jenkins将标记构建FAILED
    • 无论构建状态FAILED是否为FAILED),都会执行构建后步骤。

    从技术上讲,所有后期构建步骤都应该始终执行,但在实践中,如果构建后步骤异常,则作业永远不会完成,这可能导致某些构建后的步骤未被执行。

    此外,一般来说,构建后的步骤不会更改构建状态,但有些内容专门用于执行此操作(例如,在存档工件时,您可以选择标记构建{ {1}}如果找不到所有工件,即使在所有构建步骤之后,构建都标记为SUCCESS

    因此,了解上述情况后,您有责任设计自己的工作,并决定一个接一个地执行哪些步骤,只有在之前成功的情况下,才会影响构建状态(即构建步骤) ,无论结果如何,都需要始终执行哪些步骤(即构建后步骤)。

    编辑:

    由于我不断收到评论,以下是Jenkins(Windows)ver.1.634的全新清洁安装的截图(如评论中所述)。

    在屏幕截图中,请注意以下内容:

    • 新的Freestyle项目。
    • 滚动条一直向下,页面上没有其他内容。
    • 版本1.634(根据要求)。
    • 使用添加构建步骤下拉列表
    • 构建部分。
    • 构建后操作部分,其中包含添加构建后操作下拉列表。

    所以,重新重复我之前的评论:

      

    只有一个后期构建&#34;任何东西&#34;

    是否要调用它&#34;步骤&#34;或&#34;行动&#34; (詹金斯多年来改变了标签)。

    自定义插件可以添加许多附加功能,但是对于干净安装,基本工作就像我所描述的那样。

    enter image description here

答案 1 :(得分:2)

对于作为Maven项目创建的项目(作业),构建步骤不可配置(只有maven目标可以为构建配置),因此可以配置两个新的额外类别:预构建步骤和构建后步骤

根据我的经验,前/后构建步骤用于执行可影响构建结果的操作(例如声纳分析),以及基于构建结果执行的操作的后构建操作(例如e-邮件通知)。

答案 2 :(得分:1)

澄清。 Post build Step可以设置为仅在构建具有特定状态时执行。即如果失败做某事(向某人发送日志?)如果通过或不稳定做某事。标记源,以便它可以被提升释放? 后期构建操作始终执行。您可以在其中发送电子邮件,存档工件,向master发送工件(如果使用从属设备并拥有插件)等。 我使用Post build Step在我的GIT工作区中标记/标记成功构建的源代码。我用一个小脚本来做到这一点。 现在我只希望在Freestyle工作中提供Post Build步骤,因为它只是标记成功构建的一个很好的选择。