如何通过云效Flow完成自动化部署—主机部署

时间:2022-11-21 10:22:24
如何通过云效Flow完成自动化部署—主机部署,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,Flow 提供了通用的部署能力该篇内容注意讲解如何通过云效Flow完成自动化部署—主机部署

新建部署任务

为了创建部署组,需要先在流水线中添加「主机部署」任务。用户可以通过以下方式添加部署任务。
  • 使用模板新建流水线,选择包含 “部署” 任务的模板
  • 在已有的流水线中,添加新的阶段,并选择「部署」任务
流水线模版创建
 
新建流水线时,选择对应的开发语言,可以查看当前语言下的默认流水线模版,选择带有“部署”节点的流水线模版,即可快速使用构建能力 。
 
如何通过云效Flow完成自动化部署—主机部署
 
编排流水线,添加部署任务
 
如何通过云效Flow完成自动化部署—主机部署
 

一、主机部署

云效Flow 提供了通用的部署能力,支持业务被部署到不同国家,不同云厂商环境还有你的私有环境的主机中。
云效Flow 目前支持部署以下的主机类型:
  • 阿里云ECS

二、主机组

主机组是什么?每个 Web 应用,在集成测试的环境(通常称作日常环境)、预发的环境(称作预发环境)、对外提供服务的环境(称作正式环境)等不同的环境里运行。
 
对应在 Flow 中,我们把这些环境称之为「主机组」,也就是该应用运行在若干台机器(虚拟机/容器)。
 
前置任务
 
可以通过两种方式创建主机组:
 
方法一:通过「主机组管理」添加主机组
 
如何通过云效Flow完成自动化部署—主机部署
 
方法二:先在流水线中添加「主机部署」任务。用户可以通过以下方式添加部署任务。
  • 使用模板新建流水线,选择包含 “部署” 任务的模板
  • 在已有的流水线中,添加新的阶段,并选择「主机部署」任务
如何通过云效Flow完成自动化部署—主机部署
 
如何使用添加部署任务,可查阅“部署”一节
 
创建主机组
 
在部署任务中,点击「新建主机组」,进入新建主机组的流程。
 
你可以创建三种类型的主机组:
2、部署到阿里云 ECS
 
云效流水线 Flow 支持部署到阿里云 ECS 。你可以按照以下方式,将你的阿里云 ECS 加入主机组,从而让流水线能对其进行部署。
 
创建阿里云 ECS 类型主机组
 
添加方式——直接添加
 
1)新建主机组,选择 【主机类型】为 "阿里云ECS" 。
 
如何通过云效Flow完成自动化部署—主机部署
 
2)选择【服务授权】和【地区】,展示【可添加的主机列表】,可【新建服务授权】。
 
如何通过云效Flow完成自动化部署—主机部署
 
3) 选择你想要添加至主机组的ECS主机。
 
如何通过云效Flow完成自动化部署—主机部署  
 
4) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
 
如何通过云效Flow完成自动化部署—主机部署
 
5)至此,你可在流水线中选择使用该主机组了。
 
如何通过云效Flow完成自动化部署—主机部署
 
对部署权限的说明,可查看“主机组成员权限”一节
 
添加方式——通过 ECS 标签添加
 
同时,主机组支持通过ECS标签添加,如果您使用 ECS 标签对 ECS 资源进行分类管理,可以直接在 Flow 中建立主机组和 ECS 标签的关联。
 
如何通过云效Flow完成自动化部署—主机部署
 
StarAgent
 
为保证部署通道可用性,提高部署成功率,飞流采用了云助手(https://help.aliyun.com/document_detail/64601.html)和Staragent双通道方案,云助手在阿里云ECS会默认安装,在新增和修改部署组的时候,飞流会通过云助手自动安装StarAgent。
 
StarAgent介绍
 
StarAgent是阿里巴巴集团服务器运维基础设施,承载了全集团的服务器交互任务。StarAgent是打造全网通,7*24不间断提供服务,安全可靠,日均亿级调用量,99.995%的系统成功率的命令通道。通过阿里巴巴集团安全团队对StarAgent进行了安全加固。重置帐号密钥,客户端服务端使用不同的加密方式,在服务器上执行的命令进行全量审计等安全策略为命令通道保驾护航。
 
StarAgent基础操作
 
查看状态:/home/staragent/bin/staragentctl status;
启动:/home/staragent/bin/staragentctl restart;
重启:/home/staragent/bin/staragentctl restart;
卸载:
1. /home/staragent/bin/staragentctl stop;
2. rm -rf /home/staragent;
3. rm /usr/sbin/staragent_sn

  

3、部署到公网主机

 
通过在对应主机中添安装 Agent 的方式,云效流水线 Flow支持部署到非阿里云的公网主机(包括其他公有云主机或者可以联通公网的自有主机)。
 
你可以按照以下方式,将你的公网主机加入主机组,从而让 Flow 能对其进行部署。
 
创建*主机类型主机组
 
1)新建主机组,选择 【主机类型】为 “自有主机”。
 
如何通过云效Flow完成自动化部署—主机部署
 
2) 展示【可添加的主机列表】,如果想要添加新的自有主机至【可添加的主机列表】,请复制主机添加指令。
 
如何通过云效Flow完成自动化部署—主机部署
 
3) 请打开你需要添加进主机组部署的主机的命令行, 并将前序操作中复制的命令,在你的自有主机上执行(请注意,主机需要能访问公网)。
 
如何通过云效Flow完成自动化部署—主机部署
 
4) 主机添加指令执行后,等待1-2分钟后,自有主机会导入【可添加的主机列表】,选择你想要添加至主机组的自有主机。
 
如何通过云效Flow完成自动化部署—主机部署
 
5) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
 
如何通过云效Flow完成自动化部署—主机部署
 
6)至此,你可在流水线中选择使用该主机组了。
 
如何通过云效Flow完成自动化部署—主机部署
 
图6. 使用主机组
对部署权限的说明,可查看“流水线成员权限”一节
 

三、部署配置

 
在流水线的部署组件中,需要进行部署配置。本篇文档会给出一个示例,供你参考,如何配置。
 
提前准备
  1. 从示例代码库新建一个SpringBoot代码库:https://code.aliyun.com/code-template/spring-boot。其中包含启动脚本deploy.sh:https://code.aliyun.com/code-template/spring-boot/blob/master/deploy.sh
  2. 在部署机安装Java运行环境
  3. 在流水线构建出制品
为了进行部署,首先需要构建出制品。Flow 中的制品是一个tgz压缩包,在构建任务中可以指定一个或者多个文件(文件夹),Flow 的制品中就会包含这些文件(文件夹)。详情可以参考文档上传到 Flow 的制品库
 
在本例中,需要将target/application.jar和deploy.sh两个文件打包到制品中。因此需要在构建任务中按下面的方式进行配置:
 
如何通过云效Flow完成自动化部署—主机部署
 
主机部署配置
 
在主机部署任务中,可以进行部署相关的配置,用于将构建产物在部署机上进行安装。
 
如何通过云效Flow完成自动化部署—主机部署
 
下载路径
 
部署配置中的下载路径就是构建物上传步骤产出的压缩包将要被下载到你的主机上的路径,本例中为:/home/admin/app/package.tgz
 
执行用户
 
填写执行部署脚本的用户,如 root,或者 admin 等。本例中为root
 
部署脚本
 
因为实际的部署脚本已经打包到了构建产出的压缩包中,因此部署脚本可以简单的进行解压和执行即可
 
mkdir -p /home/admin/application
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
sh /home/admin/application/deploy.sh restart

 

四、部署策略

真实的上线过程,如果采用全量发布,会给开发运维团队带来未知的风险,为了减少发布对线上业务的影响, Flow 提供了灰度发布,分批发布能力,最大限度的避免了不稳定发布对用户的影响, 保障业务交付的稳定。
 
主机分批部署
 
如果你一次需要发布多台主机,Flow 支持分批发布,您可在主机部署任务中,可以指定对应的部署策略。假如你有 4 台主机,选择分 2 批发布,则每一批自动发布 2 台主机。
  • 暂停方式
第一批暂停:第一批发布完后,您可先行验证,点击继续后可执行后续发布。
不暂停:每一批发布完后,自动执行后续批次的发布。
每批暂停:每一批发布完后,都需要手动确认继续发布。
  • 分批数量
指定主机分批的数量,指定分批发布的数量,会按照相应的数量进行分批部署。
如何通过云效Flow完成自动化部署—主机部署
 
五、查看部署详情
 
流水线配置完成,在流水线运行页面,在“主机部署”任务中,可以点击【部署详情】查看部署过程。
 
 
如何通过云效Flow完成自动化部署—主机部署
 
部署详情 部署单会显示当前部署的整体状态和情况。
 
 
如何通过云效Flow完成自动化部署—主机部署
 
部署状态
 
部署中:可以执行【终止】操作,及查看日志 暂停中:可以执行【终止】,【继续下一批】操作,及查看部署日志 成功:可以查看部署日志 失败:可以查看部署日志,并在卡片视图上重新发起部署
机器状态
 
待部署:无操作 部署中:可以查看部署日志 成功:可以查看部署日志 失败:可以查看部署日志,并重试单台机器 常见部署问题,可查看“部署常见问题”一节

六、部署历史 和 回滚

用户可在 流水执行记录 —> 部署历史 中,查看到该流水线所有执行的部署历史记录,并可选择其中任意一条历史记录进行回滚操作。
 
Flow 会根据当时运行的部署脚本和构建制品重新执行部署任务,以实现回滚的效果。
 
如何通过云效Flow完成自动化部署—主机部署
 
如何通过云效Flow完成自动化部署—主机部署,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,Flow 提供了通用的部署能力该篇内容注意讲解通过云效Flow完成自动化部署—主机部署。

如何通过云效Flow完成自动化部署—主机部署的更多相关文章

  1. 如何通过云效Flow完成自动化构建—构建集群

    如何通过云效Flow完成自动化构建-构建集群,云效流水线Flow是持续交付的载体,通过构建自动化.集成自动化.验证自动化.部署自动化,完成从开发到上线过程的持续交付.通过持续向团队提供及时反馈,让交付 ...

  2. 如何使用云效Flow做质量检测,保障高质量的交付速度

    使用云效Flow做质量检测,保障高质量的交付速度,云效「Flow」 提供代码扫描. 安全扫描和各种自动化测试能力,支持人工测试卡点.自动化验证卡点等多种质量红线,确保业务质量.云效流水线 Flow 流 ...

  3. 云效Flow如何实现阿里云ECS多环境发布

    一.背景 云效Flow基于标签功能实现阿里云ECS多环境发布,在软件开发和部署过程中,我们的软件往往需要在不同的运行环境中运行,例如:开发人员本地开发环境.测试团队的测试环境.还有类生产环境和生产环境 ...

  4. 如何在云效流水线 Flow中构建属于自己的NPM仓库

    如何在云效流水线 Flow中构建属于自己的NPM仓库,Flow 通过各种构建组件,对各种语言提供了制品打包能力,让用户可以快速的使用流水线构建制品,并通过后续的部署任务进行部署.Flow 已经完成了与 ...

  5. 基于云原生DevOps服务自动化部署前端项目学习总结

    本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...

  6. 一站式交付体验:云效+Kubernetes

    背景 云效依托于阿里巴巴研发效能多年规模化持续交付,赋能云上开发者专为云端用户提供的一站式研发协作平台.Kubernetes,由Google开源的容器集群管理平台,面向运维侧提供自动化的集群和应用管理 ...

  7. 什么是云效持续集成?如何关联Jenkins进行持续集成?

    什么是云效持续集成?如何关联Jenkins进行持续集成?云效流水线 Flow是一款企业级.自动化的研发交付流水线, 提供灵活易用的持续集成.持续验证. 持续发布功能,帮助企业高质量.高效率的交付业务. ...

  8. 用 flow.ci 让 Hexo 持续部署

    编者按:感谢 @小小小杜 投稿,原文链接Juglans' Blog.如果你也想体验 flow.ci 的自动化持续部署,来 http://flow.ci 首页提交申请,邀请码随后会发送到邮箱:) flo ...

  9. 边缘化搭建 DotNet Core 2.1 自动化构建和部署环境(下)

    写在前面 本篇文章是上一篇边缘化搭建 DotNet Core 2.1 自动化发布和部署(上)的后续操作,本文主要讲解如何开启Docker Remote API,开启Remote API后的权限安全问题 ...

随机推荐

  1. 每天一点 js join 函数

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

    Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...

  3. serialVersionUID 的用途--转加自己的疑问

    serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...

  4. ruby sass Encoding&colon;&colon;CompatibilityError for changes

    在'compass create projectName','cd projectName'之后,show "Encoding::CompatibilityError on line [&q ...

  5. Java基础知识强化之集合框架笔记45:Set集合之TreeSet存储自定义对象并遍历练习1(自然排序:Comparable)

    1. 自然排序: TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间的大小关系,然后将集合元素按照升序排列,这种方式就是自然排序. Java中提供了一个Comp ...

  6. C&num; 汉字的字符串截取指定字节的长度

    int index = 0;            int setCharCount = 74;            string str1 = "三星 SCH-I829 电信3G手机(优 ...

  7. gcc manual

    $ gcc --helpUsage: gcc [options] file...Options:  -pass-exit-codes         Exit with highest error c ...

  8. RH033读书笔记&lpar;10&rpar;-Lab 11 Process Control

    Lab 11 Process Control Sequence 1: Job Control 1. [student@stationX ~]$ su - 2. Begin some jobs in t ...

  9. 学号 20175201张驰 《Java程序设计》第6周学习总结

    学号 20175201张驰 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 ·1.Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类 ...

  10. ASP&period;NET MVC:WebPageBase&period;cs

    ylbtech-funcation-Utility: ASP.NET MVC:WebPageBase.cs 充当表示 ASP.NET Razor 页的类的基类. 1.A,WebPageBase 抽象类 ...