资源
工程

使用jGit-flow和Jenkins-Pipeline管理开发和交付工作流-第三部分

本文是关于使用jgit-flow和Pipeline管理开发和CI/CD工作流的三篇系列文章中的第三篇


第3部分:Jenkins Pipeline的开发和交付过程

的 管道插件, 允许用户在Jenkinsfile中实现项目的整个构建/测试/部署管道,并将其与代码一起存储.

美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜开始写詹金斯档案之前, 请记住,有许多实现CI/CD过程的方法. 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将要讨论和实现的流程只是一种方法. 此外, 通常有多种方式在jenkins文件中编写命令:原生Groovy(管道插件DSL是基于Groovy的), 使用shell脚本, 管道脚本代码, 外部库, 等..

Multibranch管道

在一个 Multibranch管道 项目, 詹金斯自动发现, 管理和执行在源代码控制中包含Jenkinsfile的分支的Pipeline(但是可以直接在作业配置中编写Pipeline脚本). 它支持为不同的分支实现不同的Jenkinsfiles. 然而,这里美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将为多个分支实现一个Jenkinsfile.

配置

管道的整个定义将写在Jenkinsfile中, 在“分支源代码”中,美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将声明美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将使用的源代码控制和存储库(这也可以通过代码完成)。. 除了, 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将分行发现策略设置为“所有分行”, 这意味着作业将在每次修改存储库时启动.e. 对于每一次推动).

然后美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将排除发布和“hotfix”分支(稍后会解释)。.

图片及文字

 

一步步地编写詹金斯文件


上下文

Pipeline作业应该在专用的Jenkins从属服务器上运行, “服务器蔡先生”, 因此,脚本将在节点上下文中编写:


结帐

此步骤从源代码控制中签出代码. Scm是一个特殊的变量,它指示签出步骤克隆触发此Pipeline运行的特定修订.


构建

a. Maven构建美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜正在使用maven构建工具,并使用shell命令触发maven构建. 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜希望从管道获得一份关于故障的详细报告, 包括失败的测试, 链接到它们, 和统计数据. 此外,如果存在失败的测试,美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜希望作业状态自动变为“不稳定”. 这些是由 管道Maven插件,它封装了maven构建命令.

图片及文字

b. 处理构建异常 和测试失败:

如果Pipeline签出了一个特性分支(由push到一个以' ST- '开头的分支触发), 通知邮件应该只发送给功能所有者. 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将使用 梅勒插件 为那.

否则, 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜喜欢发送给所有服务器成员的电子邮件通知, 并向slack频道发送通知(松弛的插件). 这应该包括带有提交者名称的最近一次Git提交的列表, 这样美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜就可以了解哪些代码修改破坏了构建.

如果在构建过程中抛出了异常,美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜希望:

  1. 抓住它
  2. 将构建状态更改为“失败”
  3. 发送适当的通知
  4. 抛出异常

构建的最终脚本看起来像这样:


发布过程

在这个过程中, 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将把一个tar (maven构建输出)上传到s3, 环境依赖于美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜正在工作的git分支吗. 代码将放在' process '步骤中:

a. 发布tar名称. 发布文件是一个tar文件(maven构建输出). 它的名字应该代表发布版本. 发布版本在根目录中找到.XML文件,美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将从中提取它

b. 发布候选tar名称. 这有点棘手. On 发布/热修复补丁 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜希望为QA创建一个候选版本. 发布候选版本拥有如下名称:

美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜的故事中,第一个发行候选版本将是:“volcano-1’.2.(“volcano-1 0-RC-1”.2.1-RC-1 '(在热修复的情况下).

RC号以1开头. 如果QA人员发现了一个bug,美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜就需要修复它,然后增加RC编号i.e. “volcano-1.2.0-RC-2’等等.

美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将使用带有当前RC号的文本文件来了解下一个版本应该是什么. 然后美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜更新文件,提交更改并创建具有正确名称的新start.

请注意,美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜确实排除了发布/热修复分支. 这允许几个团队成员在QA拒绝或有bug需要修复时继续在分支上工作, 而不是每次推送都发布新版本.


上传tar到s3

美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜不会用Pipeline脚本实现部署过程, 把它留给部署工具, 为了便于说明,我用“Chef”. Chef将部署一个新的火山应用,并在s3中提供相应的版本. 这将需要amazon s3凭证. 对于上传本身,有一个管道脚本. 尽管如此,美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将在这里使用shell使用Amazon CLI命令实现它.


部署过程

美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜不会深入探讨Chef是如何执行部署的, 但我只想说:为了让Chef知道它需要部署一个新的“火山”版本, 的版本 环境 (qa或开发或生产)文件需要更新到新版本.

a. 第一个, 美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将检查Chef存储库和环境文件所依赖的环境s目录中的“cd”.

b. 为新版本替换适当环境的当前版本. 这可以通过jq之类的shell工具来完成. 这里美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜将使用Groovy.

c. 提交和推送更改

d. 发送空闲通知

e. 如果分支是开发的或主的,它将删除发布.txt文件

下图是一个Pipeline运行的例子:

图片及文字

 

提示

  • 为了节省大量时间,请使用 管道的语法 对于每个管道命令
  • 在做詹金斯档案的时候, 您不必仅仅为了测试执行而提交和推送每一个修改. 可以使用run来执行 “回放” 直到一切正常.
  • 詹金斯蓝海 插件提供了一个新的令人敬畏的用户体验,看看吧.
  • 管道仍然是新的, 但是,在编写脚本时,您不应该对可能出现的奇怪错误感到沮丧, 其中大多数是常见的,解决方案可以很容易地在网上找到.
  • 的 管道单元测试 框架允许您在完整运行管道之前对其进行单元测试.

 

结束

作为一种代码,Pipeline几乎是游戏规则的改变者, 从某种意义上说,它现在掌握在每个程序员手中, 允许他们编写完整的发布(和部署)流程, 这可以很容易地适应开发工作流程.

探索更多的

请与美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜联系,看看美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜能如何帮助贵公司

请求一个演示-家

美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜使用cookie来操作美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜的网站并用于营销目的. 查看美狮贵宾会登录-美狮贵宾会登录中心-apple app store-美狮贵宾会排行榜的 隐私政策 or 不要出售我的个人信息政策 欲知详情.
接受
拒绝