有效实施后,持续交付(CD)会遵循传统运维团队之间的DevOps合作哲学:开发和运营。 CD是构建,部署,测试和发布过程的自动化实现。 使用CD,软件始终处于可发布状态。 在对软件系统的任何部分(基础结构,应用程序代码,配置或数据)进行任何更改时,候选发布版本都会通过交付管道 ,在该管道中创建软件,构建环境,构建数据库,运行测试并创建软件。部署。 许多工具构成了一个平台,能够沿着该管道移动软件系统。
本文介绍了Stelligent开发的CD开源平台OpenDelivery。 OpenDelivery结合了开源工具,云基础架构和脚本。 它支持整个软件系统是代码的概念。 这些脚本均在GitHub版本控制存储库中进行版本控制。 OpenDelivery使用表1中列出的众多工具来创建平台,并且它支持Linux™上的Rails,Grails和Java™开发。 在本文中,我将描述运行平台,使用交付管道以及运行作业以供应环境和部署应用程序的基本步骤。
成功安装OpenDelivery平台的三个先决条件是:
CloudFormation :注册AWS CloudFormation以获得对OpenDelivery使用的所有必需服务的访问权。 GitHub :您必须具有GitHub帐户。 免费注册GitHub。 路线53 :您需要在路线53中为您拥有的域设置托管区域。 此域将在您的OpenDelivery脚本中使用,以解决作为平台一部分创建的资源。请参阅相关信息的链接,该OpenDelivery快速入门指南。 请注意,在使用OpenDelivery时,将向您收取AWS使用费。
开发人员可以从操作中学到很多,操作可以从开发人员中学到很多。 本系列文章致力于探索将操作思维方式应用于开发(反之亦然)的实际用途,以及将软件产品视为可以以比以往任何时候都更高的敏捷性和频率交付的整体实体。
为您的项目设置OpenDelivery CD平台的第一步是在AWS中配置Jenkins CI服务器。 首先, 运行 CloudFormation设置模板。 系统将提示您输入以下参数:
ApplicationName :您要创建的Jenkins CI环境的CNAME前缀。 例如http:// ApplicationName .domainname.com。 GithubUsername :您的GitHub用户名。 ProjectName :您的GitHub项目的名称。 例如,如果我的项目的GitHub URL为https://github.com/stelligent/continuous_delivery_open_platform,则我的ProjectName为Continuous_delivery_open_platform。 电子邮件 :您要发送消息的电子邮件地址。 HostedZone :您拥有的域名,并已在Route 53中为其创建了托管区域。 GithubOrganization :您的GitHub组织的名称。 例如,如果我项目的GitHub URL是https://github.com/stelligent/continuous_delivery_open_platform,则我的GithubOrganization就是智能的。 GithubPassword :您的GithubOrganization和ProjectName的GitHub密码。 KeyName :您的EC2密钥对的名称。 不要包含任何文件后缀。 InstanceType :EC2实例类型。 如果不确定,请使用默认值。完成向导后,平台将花费大约20分钟的时间来构建。 构建完成后,转到CloudFormation控制台,然后选中名称旁边为jenkinsstack的堆栈旁边的复选框。 然后,单击输出选项卡。 复制Domain键行中的值,然后在Web浏览器中输入该值,以启动在AWS中运行的新创建的Jenkins CI服务器。 您将看到初始的Jenkins配置,如图1所示:
借助OpenDelivery,提供了开箱即用的标准交付管道。 它按顺序运行StartDeliveryPipeline,Build,CreateTargetEnvironment和DeployApplication Jenkins作业。 如果这些作业中的任何一个失败,则管道将失败,并且不会部署软件。
如图2所示,Jenkins表示了一个交付管道的示例:
在图2中 ,软件经历了三个阶段。 首先,在通过CI流程运行构建后,Jenkins使用StartDeliveryPipeline作业运行任何必需的设置。 然后,它使用CreateTargetEnvironment作业创建目标环境。 最后,如DeployApplication作业所示,它将应用程序部署到目标环境中。 这三个阶段作为一个工作单元运行,其中,如果任何作业失败,则管道也会失败。
通过建立这样的交付管道,您将评估风险的候选发布者(随着越来越多的自动化流程的发生),软件通过的管道中的每个步骤。 这意味着一旦成功完成管道,如果企业选择这样做,则可能将候选发布版本发布到生产中。 您还可以配置管道以部署到生产环境。
在OpenDelivery平台的上下文中, 环境定义为EC2实例上的操作系统以及其他已调配的资源(例如安全组,域配置和存储)。 部署环境后,即可将软件部署到该环境。 Jenkins作业(主要负责运行创建这些环境的脚本)是CreateTargetEnvironment作业。
OpenDelivery中的交付管道通过调用CloudFormation模板从头开始创建环境。 该模板执行Puppet脚本(调用puppet apply )。 (有关Puppet的更多信息,请参阅“ 敏捷DevOps:基础结构自动化” 。)
清单1显示了CloudFormation模板中调用Puppet的部分:
OpenDelivery在其GitHub存储库中提供了这些脚本。 您可以更改基础结构中使用的服务器和配置的标准脚本。
自动化部署在Capistrano中运行。 您可以使用Capistrano部署到多种类型的开发和OS平台。 这些部署是从Jenkins作业运行到在上一节中描述的CloudFormation和Puppet脚本创建的环境中。 负责运行运行部署的脚本的Jenkins作业是DeployApplication作业。
清单2中的代码片段显示了一个Capistrano脚本,该脚本运行preconfigure和deploy任务:
您将在OpenDelivery GitHub存储库中名为deploy的目录的子目录中找到其他Capistrano配方。 在清单2中 ,这些配方的示例是stripe (stripe.rb)和virtualhost (virtualhost.rb)。 您可以根据部署需求添加,修改或删除配方。
OpenDelivery平台包括针对基础结构(CI和目标环境)和部署运行的基本Cucumber验收测试。 每次将更改应用于分别提供环境或运行CreateTargetEnvironment和DeployApplication作业的脚本时,都会运行这些测试。 清单3中的示例来自OpenDelivery平台中的Cucumber脚本,该脚本验证某些服务器组件是否已安装且可运行:
您可以修改或扩展提供的测试以测试更多环境或部署配置。
在本文中,您了解了OpenDelivery如何利用开源工具和配置为云中的连续软件交付创建平台,以及如何利用该平台。 持续交付最适合一起工作的开发和运营团队。 下一部分将讨论如何打破部门孤岛并创建跨职能的DevOps团队。
翻译自: https://www.ibm.com/developerworks/java/library/a-devops8/index.html
相关资源:25个经典网站源代码