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

    技术2022-07-21  99

    有效实施后,持续交付(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配置

    CD管道

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

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

    图2. Jenkins CI服务器中所示的交付管道

    在图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脚本,该脚本运行preconfigure和deploy任务:

    清单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存储库中名为deploy的目录的子目录中找到其他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

    相关资源:25个经典网站源代码
    Processed: 0.008, SQL: 9