我在* nix系统上设置了具有以下流程的jenkins项目。
我是否必须将所有这些作为一个单独的工作创建,然后在项目中聚集在一起。 我应该使用管道或多工作插件吗?如果我也可以在任何时间点独立启动任何这些步骤会更好,就像“结帐和编译”一样,看看构建是否稳定。这些步骤大多是顺序但不总是如此。 你能帮我解决一下如何在詹金斯轻松管理这个工作流程吗?
答案 0 :(得分:0)
首先,Jenkins将会检测到您的Subversion存储库,并在检测到有人对该特定Subversion URL进行提交时立即关闭该作业。它还将处理结帐和/或更新,因此已经处理了步骤#1。
在 build 步骤中,Jenkins可以执行多个构建步骤,包括使用Ant进行编译(这是一个Java项目吗?如果没有,为什么要使用Ant?)。运行其他构建和shell脚本,然后检查每个构建和shell脚本的退出状态,并将构建声明为成功或失败。这可以为你处理第2 - 5步。
当然,有各种插件可用于FTP文件,运行后构建shell脚本等。例如,如果您有一个编译代码的位置(如从中获取Java JAR文件),您可以在构建后的步骤中执行此操作。
构建后步骤的优点是它可以处理Ant构建文件中可能没有的内容(例如FTP步骤或标记构建)。构建后的步骤可以从单元测试,Findbugs,Checkstyle,JavaDoc生成,PMD等编码样式插件生成图表图表。
构建和构建后步骤的问题是,如果任何一个失败,您的构建将被标记为失败。这可能不是你想要的。
在这种情况下,您可以将 build 划分为多个组件。例如,一个组件编译并构建DSL。另一个将 DSL推送到环境中。这样,您的 build 就可以成功,但是我们的构建触发的第二个工作 - 将DSL推入环境 - 可以被标记为单独的失败。
您也可以使用Promotion Plugin。此插件的优点是可以选择特定的构建。例如,将DSL推送到环境可以是促销步骤。当您找到自己喜欢的版本时,推广 DSL推送到环境中。我们使用Ant与Ivy和Maven生产罐子。我使用Promotion Plugin做两件事。当构建成功完成时,我通过每次构建成功时触发的Promotion Plugin作业将该jar发布为SNAPSHOT。当开发人员对jar感到满意时,他会使用另一个Promotion Plugin作业手动升级它,该作业将把jar发布到我们的RELEASE存储库中,所有其他项目都会使用它。
基本上,使用Jenkins没有正确答案。您可以将所有步骤放入单个构建过程(可以运行许多构建系统),或将构建分成多个构建,这些构建会一个接一个地触发。 (您可以使用Copy Artifact Plugin将构建在一个构建中的内容复制到另一个构建中。)或者,您可以使用Promotion Plugin来选择要将哪些构建推送到您的环境中。
幸运的是,Jenkins易于设置和使用,您可以很快掌握它。你可以用一种方式尝试,然后以另一种方式尝试,看看哪种方式最好。