2014-10-29 89 views
29

听起来可能是一个非常基本的问题 - 但我找不到任何文章解释了为什么Jenkins会提供后期制作步骤以及操作。jenkins发布步骤和行动 - 有什么区别

在詹金斯 - 我看到的选项是在后期生成步骤与作用不同,但

  • 什么是执行的顺序?
  • 什么时候应该使用哪个选项?
  • 什么是最佳实践?
+0

伟大的问题。你有没有找到这方面的信息? – cnu 2017-11-14 22:00:23

回答

25

一目了然,这里是詹金斯的工作流程(无需额外的插件)

  1. [点播,如果需要的话]安装工具,(如JDK,蚂蚁,Maven的,等)
  2. [可选]执行SCM结帐,(如SVN或Git)。
  3. 执行构建步骤,(如构建Ant项目,编译代码等)。
  4. [可选]执行构建后步骤,(如存档文件,发送电子邮件等)。

有插件,允许工具安装后立即执行动作,如Pre-SCM-stepEnvInject插件。还有插件可以添加更多可能的构建步骤和构建后步骤。

构建和构建后步骤之间的差异部分基于逻辑分离,部分基于工作流配置。从逻辑的角度来看,当你建立/编译一个项目时,这是一个“构建”步骤,而当你存档构件时,因为这发生在构建之后,这是一个“构建后”步骤。

但也有工作流程配置方面的考虑,它具有一切与:

  • 做的构建失败”,并与
  • 生成状态”(如作为成功的,不稳定的,失败)

当有多个 “生成” 的步骤,詹金斯:

  • 执行第一生成步骤
  • 检查用于第一构建步骤的退出代码
    1. 如果退出代码0(成功),詹金斯继续到下一个生成步骤(如果有的话)
    2. 如果退出码不是0(失败),则Jenkins 标记生成为FAILED,并且继续生成后生成操作。
  • 詹金斯执行后生成步骤(无论是否建立被标记FAILED与否)

所以,换句话说:

  • 如果构建步骤成功,詹金斯可以执行以下构建步骤(如果有的话)。
  • 如果构建步骤失败,Jenkins将不会执行以下构建步骤。
  • 如果全部构建步骤成功,詹金斯将标记构建SUCCESS
  • 如果任何构建步骤失败,詹金斯将标记构建FAILED
  • 无论构建状态FAILED与否)执行后构建步骤。

从技术上讲,所有生成后应在任何时候都可以执行的步骤,但在实践中,如果后期生成步骤例外,作业无法完成这可能会导致无法执行一些后建的步骤。

而且,通常生成后的步骤不改变生成状态,但也有一些是专门设计来做到这一点(例如,存档工件时,您可以选择标记,如果不是所有的文物建立FAILED被发现,即使经过所有构建步骤,构建被标记为SUCCESS

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

编辑:

因为我不断收到的意见,这里是一个全新干净安装詹金斯(Windows)中ver.1.634的截图(如在评论提到)。

的截图,请注意以下事项:

  • 新自由式项目。
  • 滚动条一直向下,页面上没有更多内容。
  • 版本1.634(根据要求)。
  • 构建节与添加构建步骤下拉。
  • 生成后操作部分与添加后生成操作下拉。

因此,再次重申我之前的评论:

只有一个生成后的“什么”

你是否要称之为“一步”或“行动“(詹金斯多年来改变了标签)。

自定义插件可以添加很多额外功能,但对于全新安装而言,基本作业就如我所描述的那样。

enter image description here

+10

问题是后期制作**步骤**和后期制作**动作**之间有什么区别。 – Peter 2015-07-24 14:01:41

+0

@Peter只有一个后期构建“任何东西”。如果你有一些自定义的插件,你必须列出它们,但是你已经有了你的答案 – Slav 2015-11-10 20:51:00

+0

@Slav我正在盯着Jenkins的“配置”页面上的两个按钮来完成多步骤的工作。一个按钮说“添加后构建步骤”。另一个按钮说“添加后构建动作”。显然有区别。 – nclark 2016-01-14 16:22:33

2

对于作为Maven项目生成步骤是不可配置(仅Maven的目标是配置为构建)创建项目(工作),所以两个新的额外的类别来配置:预编译步骤和后期构建步骤。

根据我的经验,pre/post-build步骤用于执行可能影响构建结果(如Sonar Analysis)的操作,以及基于构建结果执行的操作的构建后行为(如e邮件通知)。

1

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

+0

对于免费的样式作业,有一个Post Build Actions插件来执行一组脚本,可以设置为只有在构建成功时才执行的脚本等。 – jdalew 2016-12-29 17:08:37