利用 Rational Team Concert 和 UrbanCode Deploy 实现持续交付

第 1 部分. 一个开箱即用的实现

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 利用 Rational Team Concert 和 UrbanCode Deploy 实现持续交付

敬请期待该系列的后续内容。

此内容是该系列的一部分:利用 Rational Team Concert 和 UrbanCode Deploy 实现持续交付

敬请期待该系列的后续内容。

本系列文章介绍了两种机制,以便集成 IBM Rational Team Concert™ 和 IBM® UrbanCode Deploy 来创建一个持续交付流程。本文(第 1 部分)将介绍第一种方法,该方法是一个打包的开箱即用实现,很容易建立。第二种方法将在 第 2 部分第 3 部分 中介绍,该方法会使用对 Ant build.xml 文件的扩展。

简介

许多企业都已从持续集成流程中受益,在该流程中,用户向源代码存储库提交了更新的源代码之后,就会执行软件组件的完整构建和单元测试。直接构建完整的体系(并运行单元测试)可以很好地验证开发人员提交的变更是否令人满意,是否会导致集成错误。然而,该阶段中可以执行的测试水平是有限制的,而且不能用来确认应用程序正确交付了所需的功能,也不允许用于性能测试或安全测试。执行上述操作的惟一方法是将应用程序部署到运行环境中,并采用与生产环境类似的方式来运行应用。持续集成流程的扩展被称为持续交付流程,该流程从构建和单元测试开始,一直到将应用程序部署到运行时环境中。

这个由三篇文章组成的系列文章的第一篇文章将从 Rational Team Concert 元素的介绍开始,Rational Team Concert 提供了持续集成能力。如果您熟悉 Rational Team Concert,那么您可能想要跳到 持续交付 部分。

重要概念和术语

以下这些是使用 Rational Team Concert 实现协作开发所涉及的重要概念和术语。

流可以充当变更的集合点。它们包含所有开发工作的累积结果。用户向一个流 ‘交付’ 更改,为了保持他们的工作区最新,他们会 ‘接受’ 来自由其他用户交付的流的变更。流在概念上类似于其他许多版本控制系统中的一个分支。
 
变更集
当在 Rational Team Concert 中在版本控制之下变更文件时,需要管理和跟踪这些变更。变更集是一种机制,它将文件和目录变更分组汇集到集合中,从逻辑上形成一个完整的工作单元。这个分组任务是作为 Rational Team Concert 签入流程的一部分来执行的。在大多数情况下,变更集随后会与一个工作项(如任务或缺陷)相关联,这使得变更集的上下文变得可见。变更集的团队成员可以查看已执行的变更,确保工作项符合要求。
 
交付
交付是将来自某个开发者的单独工作区的文件变更传输给流,交付目前与工作区有关联。交付操作的结果是:新文件或新文件版本被存储在流中,可供与流相关的其他开发人员使用。其他开发人员可以通过 Rational Team Concert 用户界面获知新内容的存在,他们可以选择适当的时间来接受变更。
 
接受
接受是使用其他用户最近提供的新文件内容来更新用户工作区的过程。
 
用户工作区
每个用户都有一个存储库工作区,该工作区连接到他们交付工作所用的流。当用户更改文件时,编辑副本就会保存在与存储库工作区相关的客户端沙箱中。当用户完成更改时,就会检查文件,将它从客户端复制到存储库的服务器端。文件被收集到一个 ‘变更集’ 中,其中还包含用户已更改的其他文件。当更改集完成时,用户就会将变更集交付给流。

利用 Rational Team Concert 实现协同开发

图 1 显示了用户与流的交互。用户 1 将文件变更签入服务器端存储库工作区,并创建一个新的变更集。然后将变更集与一个工作项相关联,以便提供变更集上下文。工作项(与变更集有关联)然后被交付给共享的流。开发人员 2 接受这些变更(这些变更将会更新其存储库工作区),并将文件变更复制到保存其存储库文件的本地硬盘。

图 1. 流的签入、交付和接受
开发人员签入并交付其代码
开发人员签入并交付其代码

持续集成

图 2 概括了持续集成流程中的交互。

图 2. 开发人员构建自动共享应用程序代码的流程
共享一个流的开发人员和构建流程

在图 2 中,三个开发人员通过一个共用的开发流程分享了他们的工作。例如,John 完成了一项工作,并将其交付给开发流程。Sue 和 Chris 然后选择接受该工作,将该工作引入他们的工作区,从而使他们能够将 John 所做的更改整合到他们的工作中。该流程创造了一个协作环境,在该环境中,开发人员拥有他们所需的独立性,可以在工作区中独立完成其工作,但是他们也有一个使用开发流程的受控制集成流程。存在一个特殊的工作区,该工作区被连接到构建流程。每隔一定周期(可以短到每一分钟),就会启动构建流程,构建工作区会寻找已交付给开发流程的新的变更。如果构建流程发现,自上次构建后没有任何变更,那么它就会停止构建。如果构建流程找到已交付的新变更,则会运行一个构建,并生成一个结果,该结果包含已创建的二进制对象的所有适当记录,以及已执行的单元测试。图 3 显示了一个具体的构建流程示例。John 在两个变更集(与编号 2012 和 2013 的工作项相关)上完成了相应的工作。John 向共享流交付了这些变更,这导致 Sue 和 Chris 被邀请接受这些变更并更新其工作区。随后,Chris 完成了关于缺陷 1985 的工作,并交付工作项和相关变更集。John 和 Sue 随后接受变更集,将变更集引入其工作区。

图 3. 变更被交付和收集到一个构建记录中的示例
开发人员变更被包含在一个构建记录中
开发人员变更被包含在一个构建记录中

规划好的构建流程是在用户执行了 交付关键概念和术语 部分描述的交付操作后开始的。生成的日志文件和二进制对象被存储在 Rational Team Concert 构建记录中,并生成一个新的快照。快照与构建记录有关联。在大多数情况下,会生成一些二进制对象,比如 JAR 文件、WAR 文件、EAR 文件、EXE 文件或其他格式的文件,这些文件是构建流程结束时生成的。干净地构建集成应用程序代码和成功通过所有自动运行单元测试的能力是衡量工作质量的一个好方法,也是项目团队朝着共同目标前进的一个好的迹象。然而,许多团队想要更进一步,扩展该流程来将应用程序部署到运行时环境中,以便执行进一步的测试操作。

Rational Team Concert 构建流程

在本文有限的篇幅内介绍关于 Rational Team Concert 构建流程或 build.xml 文件文件的详细信息是不可能的。关于如何创建一个 Rational Team Concert 构建流程的详细信息,可以在产品帮助页面和许多基于 Web 的文章中找到:

如果您想了解关于 IBM 开发团队如何使用 Rational Team Concert 构建 Rational Jazz 产品家族的更多信息,请阅读 "我们如何使用 CLM 来构建 CLM"。

持续交付

在构建一个持续交付流程的过程中,有一些需要进一步执行的任务,以便在运行时环境中实际安装二进制对象。Rational Team Concert 负责该流程的构建和单元测试方面(持续集成阶段),UrbanCode Deploy 负责部署。简言之,这两种产品之间的界限是要部署的二进制文件。Rational Team Concert 生成二进制文件,UrbanCode 部署这个二进制文件,将它部署到一个环境中。

团队可以在已部署到运行时环境中的应用程序上执行更现实的功能、性能和安全测试。这就是部署操作具有其价值的原因。这个流程也使得部署成为团队的标准操作程序的一部分,并确保每个人都对部署环境、部署需求以及部署工作不顺利时导致的问题有所认识。在开发团队几个星期的开发工作中,可能要执行数百、也许数千的应用程序部署工作,将应用程序部署到开发环境和 QA 环境中。结果,在开发阶段,应用程序部署流程被测试、调整和修改,直到开发人员非常自信能够将应用程序部署到预生产和生产环境中。

一个简单的持续交付流程

您可以完全使用图形机制来创建一个简单的持续交付流程,将 Rational Team Concert 构建流程连接到 UrbanCode 解决方案,以便实现自动化部署。新的后构建(post-build)部署选项被添加到 Rational Team Concert 版本 4.0.5 中,以便包含一个新的后构建部署选项,该选项允许构建流程轻松地与 UrbanCode 进行交互。您可以通过打开构建定义,将后构建部署特性添加到现有构建流程中。单击屏幕顶部的 Build Definition,然后选择 Configure。可以在 Post-build 选项卡上找到 Post-build Deploy 选项。

利用这个简单的流程,您可以将新建的内容上传到单个 UrbanCode Deploy 组件的新版本中。还有一个选择是在必要时调用一个部署。

图 4. 将后构建部署选项添加到现有构建中
启用后构建部署的对话框
启用后构建部署的对话框

配置后构建部署

后构建部署流程要求用户填写一些属性。所需的信息是:

  1. UrbanCode Deploy 服务器的 URL。
  2. 用户的名称,用于登录到 UrbanCode Deploy。
  3. 步骤 2 中已识别用户的密码或身份验证令牌。
  4. 组件的名称,新组件版本应该存储到该组件中。
  5. 提供给新创建的组件的版本名称。通常,构建标识符至少会被用作使用 ${buildLabel} 语法的名称的一部分。
  6. 一个基本的目录引用,它标识了用来存储构建工件的位置的一部分。需要存储在 UrbanCode Deploy 中的新组件版本中的内容摘自这个基本位置。
  7. 将包含在新组件版本中的文件集。这是一种针对所需文件的模式匹配。模式匹配 **/* 将会采用所有文件。
  8. 该文件集将新组件版本排除在外。
  9. 所有属性都必须复制到 UrbanCode Deploy。这样就可以将名称/值对作为新属性添加到组件版本中。在执行部署操作期间可以访问这些属性。这些属性的格式如下所示:snapshotUUID=${team.scm.snapshotUUID}
  10. 要在 UrbanCode Deploy 组件版本上创建的所有链接,比如连接到 Rational Team Concert 构建记录的链接。此链接中包含的语法是通过在 Web 浏览器中加载任何构建记录并复制 URL 的适当部分获得的。完整构建记录链接的示例如下:
    https://rational-srv-02:9443/ccm/web/projects/
    JKE%20Banking%20%28Change%20Management%29#action=com.ibm.team.build.viewResult
    &id=_KclYURb0EeSlFMEP2zrMSg

要添加的构建结果包括整个 URL,其中包括 '=' 符号。使用参数 ${buildResultUUID} 替换其余构建结果标识符。
备注:
在清单 1 中,存储库地址也被一个参数替换。

清单 1. 构建结果
Build Result=${repositoryAddress}web/projects/JKE%20Banking%20%28Change%20Management%29#
action=com.ibm.team.build.viewResult&id=${buildResultUUID}
  1. 后构建部署配置的最后部分包括一个复选框,用来指示在加载新的组件版本之后需要启动一个部署。
  2. 如果需要启动一个部署,那么用户必须确定:
    • UrbanCode Deploy 应用程序
    • 运行部署的应用程序环境
    • 要运行的应用程序流程。

图 5-7 显示了一个完整的后构建部署配置。

图 5 显示了服务器连接,以及用来建立到 UrbanCode Deploy 的连接的用户凭证。

图 5. 后构建部署 – 服务器连接
UrbanCode Deploy 服务器连接凭证
UrbanCode Deploy 服务器连接凭证

图 6 显示了 Publish Artifacts 页面,您将在该页面中输入组件的名称,以便接收新版本的可交付成果。您还可以指定 UrbanCode Deploy 用来命名新版本的版本标识符。图 6 中的示例显示,${BuildLabel} 语法使用了 Rational Team Concert 构建记录中记录的日期和时间戳构建标签。

图 6. 后构建部署 – 发布工件
要发布到 UrbanCode Deploy 的工件
要发布到 UrbanCode Deploy 的工件

图 7 显示了在 UrbanCode Deploy 中发布新组件版本后运行的流程。调用部署流程是可选的,正如图 7 顶部所示的 Deploy 复选框的状态所指示的那样。要运行部署,请键入应用程序的名称、环境和要使用的流程。

图 7. 后构建部署 – 流程申请表
将在发布工件后运行的 UrbanCode Deploy 流程
将在发布工件后运行的 UrbanCode Deploy 流程

运行后构建部署的结果

在成功运行一个后构建部署操作后,从构建流程中选定的文件将被存储在 UrbanCode Deploy 中已标识组件的一个新版本中。该 UrbanCode Deploy 组件版本包含一个链接,该链接指向 Rational Team Concert 构建记录。在从 UrbanCode Deploy 中选中该记录时,该记录会在 Web 浏览器界面中打开。

如果需要的话,还可以通过 Rational Team Concert 构建流程调用一个部署操作。该操作的结果包含在 UrbanCode Deploy 中。没有来自 Rational Team Concert 构建流程的 UrbanCode Deploy 应用程序部署结果记录的链接。产品之间的所有链接都来自 Rational Team Concert 构建记录的 UrbanCode Deploy 组件版本。

结束语

本文中展示的持续交付解决方案很容易设置和操作。本文将帮助团队将内容推送到 UrbanCode Deploy,并调用该内容的一个部署。该方法的一个主要优点是:开发人员不必学习另一个工具就可以运行该部署。他们只需使用其现有源代码管理产品和构建产品。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational, DevOps
ArticleID=1002660
ArticleTitle=利用 Rational Team Concert 和 UrbanCode Deploy 实现持续交付: 第 1 部分. 一个开箱即用的实现
publish-date=04072015