软件 查看点云中点的坐标值_在云中持续交付软件

软件 查看点云中点的坐标值

有效实施后,持续交付(CD)会遵循传统运维团队之间的DevOps合作哲学:开发和运营。 CD是构建,部署,测试和发布过程的自动化实现。 使用CD,软件始终处于可释放状态。 在对软件系统的任何部分(基础结构,应用程序代码,配置或数据)进行任何更改时,候选发布版本都会通过交付管道 ,在该管道中创建软件,构建环境,构建数据库,运行测试并创建软件。部署。 许多工具组成了一个平台,能够沿着该管道移动软件系统。

本文介绍了Stelligent开发的CD开源平台OpenDelivery。 OpenDelivery结合了开源工具,云基础架构和脚本。 它支持整个软件系统是代码的概念。 这些脚本均在GitHub版本控制存储库中进行版本控制。 OpenDelivery使用表1中列出的众多工具来创建平台,并支持Linux™上的Rails,Grails和Java™开发。 在本文中,我将描述运行平台,使用交付管道以及运行作业以供应环境和部署应用程序的基本步骤。

表1. OpenDelivery平台使用的工具
工具 描述
亚马逊网络服务(AWS)CloudFormation OpenDelivery使用CloudFormation(一种用于描述AWS资源配置的模板语言)来实现Jenkins环境的完整基础架构自动化以及针对目标环境的AWS资源配置。
Amazon Elastic Compute Cloud(EC2) OpenDelivery将EC2用于其所有计算实例。
亚马逊CloudWatch OpenDelivery使用CloudWatch监视一些基本性能指标,并在超过阈值时发送简单通知服务(SNS)通知。
亚马逊53号公路 路由53是一个高度可用且可扩展的DNS,OpenDelivery用来根据用户首选项将域设置为端点。
亚马逊SimpleDB SimpleDB是NoSQL数据库,具有高度可用性和可伸缩性。 OpenDelivery使用它来存储管道配置,例如IP地址和CloudFormation堆栈名称。
亚马逊简单通知服务(SNS) OpenDelivery在创建环境时使用SNS发送消息。
亚马逊简单存储服务(S3) OpenDelivery使用S3来存储平台使用的临时文件。
Capistrano Capistrano是OpenDelivery用于将应用程序部署到环境的基于Ruby的特定于部署的DSL。
的GitHub GitHub托管OpenDelivery源代码。 OpenDelivery的用户还必须将GitHub帐户用于其应用程序代码。
詹金斯 Jenkins是持续集成(CI)服务器。 OpenDelivery使用Jenkins作为其平台,以运行应用程序代码,配置,数据和基础结构更改的所有构建和部署。
木偶 Puppet是具有自己的特定于域的语言(DSL)的基础结构自动化工具。 目标环境的所有基础架构自动化均由Puppet编写,并由CloudFormation调用。
Ruby 自动化管道的大多数脚本都是用Ruby编写的。

先决条件

成功安装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所示:

图1.使用CloudFormation进行配置后的初始Jenkins配置
Jenkins CI服务器的屏幕快照,显示AddUserToEmailGroup,Build,BuildAMI,CapistranoModuleBuild,CommonStepDefinitionGemBuild,CreateTargetEnvironment和DeployApplication Jenkins作业。它还显示了两个选项卡:DeliveryPipeline和“电子邮件组管理”。

CD管道

借助OpenDelivery,提供了开箱即用的标准交付管道。 它按顺序运行StartDeliveryPipeline,Build,CreateTargetEnvironment和DeployApplication Jenkins作业。 如果这些作业中的任何一个失败,则管道将失败,并且不会部署软件。

如图2所示,Jenkins表示了一个交付管道的示例:

图2. Jenkins CI服务器中所示的交付管道
Jenkins CI服务器中表示的交付管道的屏幕快照。该软件分为三个独立的阶段。首先,在通过连续集成过程运行构建后,它使用StartDeliveryPipeline作业运行任何设置,然后使用CreateTargetEnvironment作业创建目标环境,最后运行第三阶段,将应用程序部署到DeployApplication中表示的目标环境中工作。这三个阶段是作为一个工作单元运行的,如果其中任何一项作业失败,则全部失败。

图2中 ,软件经历了三个阶段。 首先,在通过CI流程运行构建后,Jenkins使用StartDeliveryPipeline作业运行所有必需的设置。 然后,它使用CreateTargetEnvironment作业创建目标环境。 最后,如DeployApplication作业所示,它将应用程序部署到目标环境中。 这三个阶段作为一个工作单元运行,其中,如果任何作业失败,则管道也会失败。

通过建立这样的交付管道,您将评估风险的候选发布者(随着越来越多的自动化流程的发生),软件所经历的管道中的每个步骤。 这意味着一旦成功完成管道,如果企业选择这样做,则可能将候选发布版本发布到生产中。 您还可以配置管道以部署到生产环境。

设置目标环境

在OpenDelivery平台的上下文中, 环境被定义为EC2实例上的操作系统以及其他已调配的资源(例如安全组,域配置和存储)。 部署环境后,即可将软件部署到该环境。 Jenkins作业(主要负责运行创建这些环境的脚本)是CreateTargetEnvironment作业。

OpenDelivery中的交付管道通过调用CloudFormation模板从头开始创建环境。 该模板执行Puppet脚本(调用puppet apply )。 (有关Puppet的更多信息,请参阅“ 敏捷DevOps:基础结构自动化” 。)

清单1显示了CloudFormation模板中调用Puppet的部分:

清单1.调用Puppet的production.template的CloudFormation片段
"# Install Ruby 1.9.3\n",
"rpm -Uvh /tmp/ruby-1.9.3p0-2.amzn1.x86_64.rpm\n",

"# Install Puppet 3.0.1 from Rubygem\n",
"gem install puppet --no-rdoc --no-ri\n",
"groupadd puppet\n",

"# Run Puppet\n",
"puppet apply --modulepath=/home/ec2-user/modules /home/ec2-user/manifests/site.pp\n",
...

OpenDelivery在其GitHub存储库中提供了这些脚本。 您可以更改基础结构中使用的服务器和配置的标准脚本。

运行部署

自动化部署在Capistrano中运行。 您可以使用Capistrano部署到多种类型的开发和OS平台。 这些部署是从Jenkins作业运行到在上一节中描述的CloudFormation和Puppet脚本创建的环境中。 负责运行运行部署的脚本的Jenkins作业是DeployApplication作业。

清单2中的代码片段显示了一个Capistrano脚本,该脚本运行preconfiguredeploy任务:

清单2. deploy.rb中的Capistrano代码段可重置环境并运行部署
task :preconfigure do
  run "cd #{deploy_to} && sudo rm -rf #{deploy_to}/#{artifact_name}"
  config_content = from_template("config/templates/s3_download.erb")
  put config_content, "/home/ec2-user/s3_download.rb"
  run "sudo chmod 655 /home/ec2-user/s3_download.rb"
end

task :deploy do
  run "sudo ruby /home/ec2-user/s3_download.rb --outputdirectory #{deploy_to}/ \
    --bucket #{s3_bucket} --key #{artifact}"
  case
  when language == "rails"
    run "cd #{deploy_to} && sudo tar -zxf #{artifact}"
    run "sudo chown -R ec2-user:ec2-user #{deploy_to}/#{artifact_name}"
  end
end
...
case
when language == "rails"
after "preconfigure", "deploy", "database:configuration", "stripe:initializer", \
      "bundler:install", "database:migration", "virtualhost:configuration", \
      "whenever:set", "postconfigure", "restart"

您将在OpenDelivery GitHub存储库中名为Deployment的目录的子目录中找到其他Capistrano配方。 在清单2中 ,这些配方的示例是stripe (stripe.rb)和virtualhost (virtualhost.rb)。 您可以根据部署需求添加,修改或删除配方。

持续测试

OpenDelivery平台包括针对基础结构(CI和目标环境)和部署运行的基本Cucumber验收测试。 每当将更改应用于分别提供环境或运行CreateTargetEnvironment和DeployApplication作业的脚本时,这些测试就会运行。 清单3中的示例来自OpenDelivery平台中的Cucumber脚本,该脚本验证某些服务器组件是否已安装且可运行:

清单3. OpenDelivery(production.feature)中的Cucumber脚本的片段,该脚本针对环境运行自动化测试
Feature: Scripted Provisioning of Target Environment
As a Developer
I would like my target environment provisioned correctly
so I can deploy applications to it

Background:
Given I am sshed into the environment

Scenario: Is the proper version of Postgresql installed?
When I run "/usr/bin/postgres --version"
Then I should see "8.4"

Scenario: Is the proper version of Apache installed?
When I run "/usr/sbin/httpd -v"
Then I should see "2.2"

...

您可以修改或扩展提供的测试以测试更多环境或部署配置。

进行每项更改都可以构建,部署,测试和发布

在本文中,您了解了OpenDelivery如何利用开源工具和配置为云中的连续软件交付创建平台,以及如何利用该平台。 持续交付最适合一起工作的开发和运营团队。 下一部分将讨论如何打破部门孤岛并创建跨职能的DevOps团队。


翻译自: https://www.ibm.com/developerworks/java/library/a-devops8/index.html

软件 查看点云中点的坐标值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值