配置部署

在CircleCI上的部署与其他作业配置相同;您可以创建一个作业并将其配置为部署到几乎任何目标。本文提供了部署过程的概述,以及最佳实践和优化策略。

概要

一旦开发并测试了软件应用程序,需要部署并为其预期的受众提供。Circleci可以部署到Virtualy任何目标,并且可以轻松配置为与QA / Testing,功能管理和部署策略(如蓝绿色或金丝雀部署)的其他服务集成。快速且轻松自定义您的配置以匹配您的要求,无论是否需要手动批准的全自动过程或元素。

部署:基础知识

  • 部署工作:要部署应用程序,请添加工作对你的.circleci / config.yml.文件和配置作业,以运行所需的步骤。的部署示例文档介绍了许多常见部署目标的示例配置。

  • 部署参数:您可能需要添加环境变量和SSH密钥来完成部署步骤。环境变量可以通过CircleCI UI(请参见下面的链接获取详细说明)添加到项目本身,或者在您的配置中定义。定义环境变量的示例您的配置可以在此页下面非orb Heroku示例的部署作业配置中查看。

  • 手动批准:如果您的部署策略需要手动批准步骤,则可以包含一个保存/批准工作流程中的工作。然后,手动批准按钮将从Circleci UI中的工作流程图中获得。

使用ORB来简化部署

在Circleci,我们提供可重用配置的包,称为绿色原子。ORBS可用于许多常见部署目标,这可以帮助您简化和简化您的配置。查看全系列可用的球体ORBS注册表。对于简单的部署管道,使用ORBS将为您提供最小的配置所需的结果。

例如,考虑一下AWS CodeDeploy orb。这个orb有一个预先配置的部署作业,您可以在配置中使用单行包含该作业aws-code-deploy /部署一旦通过添加Orbs Stanza调用了ORB。对于此示例部署可以像:

版本:2.1 ORBS:AWS-Code-Deploy:circleci/aws-code-deploy@0.0.11工作流程:deploy_application:作业: -  aws-code-deploy / deploy / deploy:application-name:myApplication部署组:MyDeployMentedGroup Service-角色-arn:mydeploymentgrouprolearn bundle-bucket:myapplications3bucket bundle-key:mys3bucketkey

在引擎盖下,此ORB使用指定的参数设置为捆绑并部署您的应用程序aws-code-deploy /部署职业宣言。

使用heroku一个简单的例子

在本节中,我们将查看将Rails应用程序部署到Heroku的简单示例。

使用Heroku Orb

下面是使用的Heroku部署示例Heroku Orb.简化配置。配置使用工作流只有在顺序分支过滤器分支被检查出来构建工作已经运行。

看着部署通过Git命令源ORBS注册表,我们可以看到此简洁配置要求设置以下环境变量:HEROKU_APP_NAME美元$ heroku_api_key.。从中获利掩蔽掩蔽,最好的做法是设置环境变量项目水平或在一个背景. .

版本:2.1 Orbs:heroku:circleci /heroku@0.0.10。#调用heroku orb工作流:作业: -  build  -  heroku / deploy-vit:#使用预先配置的作业,Deploy-via-git需要: - 构建过滤器:分支:仅限:序列分支 - 过滤器乔布斯:构建:Docker: - 图片:Circleci / Ruby:2.4-node auth:用户名:mydockerhub-user密码:$ dockerhub_password#上下文/项目ui env-var参考 - 图片:9.4.12-Alpine Auth:用户名:MyDockerHub-User密码:$ dockerhub_password#上下文/项目ui env-var参考工作_directory:〜/ circleci-demo-workflows步骤: -  checkout#bundle install依赖项 - 运行:bundle install  -  path供应商/捆绑#数据库设置 -run:bundle exec rake db:create db:schema:load  - 运行:name:运行测试命令:rake

2.0配置

此版本显示相同的管道,但不使用ORB。完整的申请可以在其中找到Circleci演示工作流存储库的顺序作业分支

配置使用工作流只有在顺序分支过滤器分支被检查出来构建工作已经运行。如果您的部署作业使用以前作业的任何输出,则可以通过以下方式分享该数据使用工作区。有关条件部署的更多信息,请参阅在工作流中使用上下文和过滤

版本:2.0作业:Build:Docker: - 图片:Circleci / Ruby:2.4-node#主容器 - 运行作业步骤验证:用户名:MyDockerHub-User密码:$ DockerHub_password#上下文/项目UI Env-Var参考 - 图像:Circleci / Postgres:9.4.12-Alpine#Services Auth:用户名:MyDockerHub-User密码:$ DockerHub_password#上下文/项目UI Env-Var参考工作_directory:〜/ circleci-demo-workflows步骤: -  checkout#bundle安装依赖项- 运行:捆绑安装--Path供应商/捆绑#数据库设置 - 运行:捆绑exec rake db:create db:schema:load  - 运行:name:运行测试命令:rake部署:机器:启用:启用:true working_directory:〜/ circleci-demo-workflows环境:heroku_app:“sleepy-refuge-55486”#define env var $ heroku_app步骤: -  checkout  - 运行:名称:setup heroku命令:bash .circleci / setup-heroku.sh#运行脚本设置Heroku  - 跑:命令:|Git推送Heroku顺序 - 分支过滤器:Master Heroku Run Rake DB:迁移睡眠5#睡眠5秒等待Dynos Heroku重新启动工作流程:版本:2构建和部署:作业: - 构建 - 部署:要求: -构建过滤器:分支机构:仅限:顺序分支过滤器

下一步

看看部署示例文档为某些流行部署目标提供配置示例。还要前往ORBS注册表要查看是否有ORB为您的部署目标有助于保持配置简单。如果不是考虑创作一!!