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

新建部署任务

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

一、主机部署

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

二、主机组

主机组是什么?每个 Web 应用,在集成测试的环境(通常称作日常环境)、预发的环境(称作预发环境)、对外提供服务的环境(称作正式环境)等不同的环境里运行。
 
对应在 Flow 中,我们把这些环境称之为「主机组」,也就是该应用运行在若干台机器(虚拟机/容器)。
 
前置任务
 
可以通过两种方式创建主机组:
 
方法一:通过「主机组管理」添加主机组
 
 
方法二:先在流水线中添加「主机部署」任务。用户可以通过以下方式添加部署任务。
  • 使用模板新建流水线,选择包含 “部署” 任务的模板
  • 在已有的流水线中,添加新的阶段,并选择「主机部署」任务
 
如何使用添加部署任务,可查阅“部署”一节
 
创建主机组
 
在部署任务中,点击「新建主机组」,进入新建主机组的流程。
 
你可以创建三种类型的主机组:
2、部署到阿里云 ECS
 
云效流水线 Flow 支持部署到阿里云 ECS 。你可以按照以下方式,将你的阿里云 ECS 加入主机组,从而让流水线能对其进行部署。
 
创建阿里云 ECS 类型主机组
 
添加方式——直接添加
 
1)新建主机组,选择 【主机类型】为 "阿里云ECS" 。
 
 
2)选择【服务授权】和【地区】,展示【可添加的主机列表】,可【新建服务授权】。
 
 
3) 选择你想要添加至主机组的ECS主机。
 
  
 
4) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
 
 
5)至此,你可在流水线中选择使用该主机组了。
 
 
对部署权限的说明,可查看“主机组成员权限”一节
 
添加方式——通过 ECS 标签添加
 
同时,主机组支持通过ECS标签添加,如果您使用 ECS 标签对 ECS 资源进行分类管理,可以直接在 Flow 中建立主机组和 ECS 标签的关联。
 
 
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)新建主机组,选择 【主机类型】为 “自有主机”。
 
 
2) 展示【可添加的主机列表】,如果想要添加新的自有主机至【可添加的主机列表】,请复制主机添加指令。
 
 
3) 请打开你需要添加进主机组部署的主机的命令行, 并将前序操作中复制的命令,在你的自有主机上执行(请注意,主机需要能访问公网)。
 
 
4) 主机添加指令执行后,等待1-2分钟后,自有主机会导入【可添加的主机列表】,选择你想要添加至主机组的自有主机。
 
 
5) 编辑主机信息,包括主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保存,即可完成主机组的创建。
 
 
6)至此,你可在流水线中选择使用该主机组了。
 
 
图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两个文件打包到制品中。因此需要在构建任务中按下面的方式进行配置:
 
 
主机部署配置
 
在主机部署任务中,可以进行部署相关的配置,用于将构建产物在部署机上进行安装。
 
 
下载路径
 
部署配置中的下载路径就是构建物上传步骤产出的压缩包将要被下载到你的主机上的路径,本例中为:/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完成自动化部署—主机部署的更多相关文章

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

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

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

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

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

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

  4. AspNetCore&云效Flow持续集成

    如今有了越来越多的持续集成工具,给的个人开发者的福利也是很足了,如无必要,自建工具有时只是作为练手了. 众多持续集成工具 现在可用的持续集成工具繁多,各大云服务商都推出了持续集成,甚至是一定条件内都是 ...

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

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

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

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

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

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

  8. 高效使用Java构建工具,Maven篇|云效工程师指北

    大家好,我是胡晓宇,目前在云效主要负责Flow流水线编排.任务调度与执行引擎相关的工作. 作为一个有多年Java开发测试工具链开发经验的CRUD专家,使用过所有主流的Java构建工具,对于如何高效使用 ...

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

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

随机推荐

  1. cad转换成png,svg

    1.设置仓库可以在setting.xml中设置(也可以在pom中设置,设置项即可) <mirror> <id>AsposeJavaAPI</id> <name ...

  2. C#如何调用DOS命令

    在使用C#编辑过程中,通常需要利用外部命令来执行一些操作,从而完成特定的功能.下面小编就以利用C#调用DOS命令"Ver"显示系统版本号为例,给初学C#语言的网友讲解一下具体的调用 ...

  3. ConcurrentDictionary 并发字典

    线程安全 Dictionary 本身是不支持线程安全的 线程的字典--ConcurrentDictionary 线程安全实现 写安全 以往线程安全我们通过Lock实现 比如通过lock一个全局的obj ...

  4. Leaflet 中 删除 一组 标记(Marker)

    动态显示一个标签: L.marker([obj.Y,obj.X]).addTo(map).bindPopup(obj.name).openPopup(); let layers=[]; let myG ...

  5. 【C++】 四种强制类型转换(static_cast 与 dynamic_cast 的区别!)

    强制类型转换 1. static_cast 2. dynamic_cast 3. const_cast 4. reinterpret_cast 5. 为什么要需要四种类型转换? 1. static_c ...

  6. Mybatis映射器(一)

    XML查询参数: parameterType:可以给出类别名,全名等. resultType:查询结果,可以为 int,float,map等不可以与resultMap同时使用. resultMap: ...

  7. mysql基础操作(一):DDL、DML

    -- 1.在命令行中开启数据库: net start mysql -- 2.在命令行中关闭数据库: net stop mysql 1.DDL语句:create.drop.alter -- 查看所有的数 ...

  8. docker安装与配置redis详细过程

    注:大鸟飞过,这只是简单搭建,能快速运用而已!! 第一步 pull redis 命令:docker pull redis 第二步 创建redis管理目录,方便后期管理 命令: mkdir /data/ ...

  9. Spark消费Kafka如何实现精准一次性消费?

    1.定义 精确一次消费(Exactly-once) 是指消息一定会被处理且只会被处理一次.不多不少就一次处理. 如果达不到精确一次消费,可能会达到另外两种情况: 至少一次消费(at least onc ...

  10. MediaWiki定制化改动

    Linux下面安装MediaWiki环境的方法,可以参照我上一篇文章linux使用xampp安装MediaWiki环境 重置用户密码 使用维护脚本 可以使用maintenance/changePass ...