应用在不断迭代过程中,需要持续集成(CI)和持续部署(CD)。通过自动化的构建集成、测试和循环部署,实现快速交付高质量产品并降低人力成本。本文介绍使用云效2020完成应用的持续集成和部署。
前提条件
在EDAS控制台已部署应用。具体操作,请参见在容器服务K8s集群中使用JAR包或WAR包部署应用。
已将业务代码上传至代码库。
背景信息
使用云效2020实现应用的持续集成和部署,根据您期望的部署环境不同,有以下两种场景:
部署到EDAS ECS环境:只能使用JAR包或者WAR包构建、部署。相关文档,请参见使用云效2020部署Java应用至ECS集群。
部署到EDAS K8s环境:只能使用镜像构建、部署。
根据不同应用类型,在EDAS K8s环境上,包含JAR包、WAR包和镜像3种部署应用的方式。在云效2020侧持续集成和部署应用到EDAS K8s环境时,只能以镜像方式构建和部署。
使用云效2020实现应用的持续集成和部署,您只需要将开发好的新版本应用代码提交到代码库,云效流水线Flow会监听代码事件,当满足触发事件时会触发流水线运行,部署新版本应用到EDAS K8s环境。
代码开发与提交一般由开发人员执行,本文不做介绍。本文仅介绍在云效流水线Flow侧如何创建流水线,并配置代码源、镜像仓库、部署对象和发布策略等操作流程。
步骤一:在云效创建企业
如果您是第一次使用云效Flow,则需要在云效上创建您的企业。
登录云效Flow。
设置企业名称、研发组织规模,单击立即创建。
步骤二:在云效创建流水线
登录云效Flow。
在左侧导航栏,单击我的流水线,然后单击右上角的新建流水线。
在选择流水线模板对话框,在左侧单击Java,在右侧选择Java · 镜像构建,发布到EDAS Kubernetes,然后单击创建。
重要在EDAS控制台创建应用时使用的部署方式(JAR、WAR和镜像),必须与在云效流水线设置保持一致。例如:在EDAS上使用镜像方式部署应用,那么在云效设置流水线时,构建环节必须是镜像相关配置。
流水线创建完成后,自动跳转到流水线配置页面。
步骤三:配置流水线
添加代码源。
在流水线的源区域,单击添加代码源。
在添加流水线源面板,选择代码源设置为Codeup,单击添加服务连接。
在新建服务连接对话框,设置服务连接名、服务连接ID、服务授权/证书和使用范围后,单击创建。
在添加流水线源面板,配置流水线源相关信息,然后单击添加。
云效中提供的流水线源有3种:代码源、Jenkins和Flow流水线。本文以代码源作为示例。
配置项
描述
选择代码源
选择您业务代码所在的代码源,本示例以Codeup为例。
说明不同代码源需要配置的参数不同,请根据实际界面进行配置。
代码仓库
选择您的代码仓库。
默认分支
选择代码分支。
开启代码源触发
开启代码源触发功能,将Webhook添加到代码仓库,云效流水线Flow会监听代码事件,满足条件时触发流水线运行。
阿里云Code包含以下两种触发事件:
代码提交: 从本地Push分支到远程分支(或在代码管理平台的Web端进行文件修改)。云效流水线Flow会将Push的目标分支与触发分支进行匹配,如果匹配成功,则会触发流水线,并使用Push的目标分支作为流水线运行时使用的分支。
TAG创建:从本地Push Tag到服务端Tag(或在代码管理平台的Web端进行tag创建)。云效流水线Flow会将Push的目标Tag名称与触发分支进行匹配,如果匹配成功,则会触发流水线,并使用目标Tag作为流水线运行时使用的代码版本。
如果使用的是其他代码仓库,可能会涉及到其他触发事件。
Docker镜像构建。
在流水线的构建区域,单击Docker镜像构建,然后展开任务步骤镜像构建并推送阿里云。
配置任务步骤,配置完成后在页面右上角,单击保存并运行。
配置项
描述
步骤名称
输入您自定义的步骤名称,不修改则显示为默认名称。
选择服务连接
选择任务的服务连接,使云效能使用容器镜像服务。
说明如果您从未授权过,请单击添加服务连接完成配置。
地域
在下拉列表中选择地域。
仓库
在下拉列表中选择仓库。
标签
Docker镜像Tag。支持固定参数例如1.0,或者动态参数例如${DATETIME}。
Dockerfile路径
Dockerfile文件相对于代码库根目录所在路径,如META/config/Dockerfile或Dockerfile。
ContextPath
docker build命令执行后程序生成路径。填写相对于代码根目录的路径,如target。如果不填则为Dockerfile文件所在目录。
不使用缓存
如果选中,Docker Build将使用--no-cache=true参数进行镜像构建。
构建参数
运行时以
--build-arg
的形式传递到build
命令中的一组参数。单击添加可以新增并配置构建参数。
部署到EDAS K8s环境。
在部署区域,单击部署到EDAS K8s。
在编辑面板,配置任务信息,然后单击右上角保存并运行。
配置项
描述
任务名称
自定义的任务名称,不修改则显示为默认名称。
构建集群
可为任务选择不同的构建集群。更多信息,请参见构建集群。
选择服务连接
选择任务的服务连接,使云效能在EDAS上部署应用。
说明如果您从未授权过,请单击添加服务连接完成配置。
地域
选择EDAS创建应用所在的地域。
应用
选择EDAS创建的应用。
镜像
选择Docker镜像构建所创建的产出物名称。
发布策略
支持分批发布和灰度发布。
发布批次
选择单批次发布,表示不分批发布。
选择批次,如2批,表示按照指定的批次分批发布。
分批等待时间
相邻发布批次之间的等待时间。
分批方式
可选择手动确认或自动确认。例如,如果您需在完成第一批发布时先观察发布结果再决定后续操作,可选择手动确认。
任务插件
您可以根据需要通过配置任务插件发送流水线通知。 具体操作,请参见:
步骤四:代码库配置Webhook
在代码库添加云效流水线Flow的代码源触发功能生成的Webhook地址,云效流水线Flow会监听代码事件,当满足触发事件时会触发流水线运行。
本文使用Codeup作为代码库,在代码库配置Webhook的步骤仅作参考,其他代码库请以实际为准。
登录阿里云Codeup控制台,单击目标项目。
在左侧导航栏,单击设置。
在设置左侧导航栏,单击Webhooks。
在Webhooks页面,设置Webhook地址并选中推送事件,然后单击确定。
结果验证
开发者上传应用新版本代码到代码库。
云效流水线Flow监听代码事件,当满足触发事件时会触发流水线运行。
如果流水线配置了分批发布,那么在构建任务运行成功后,您可在部署任务的区域执行以下操作。
终止变更:可终止本次流水线的运行。
恢复变更:可继续下一批的发布。
当前发布单详情地址:可跳转到EDAS控制台查看变更详情。
日志:可查看流水线的运行日志。
第一批发布完成后,您可以先验证新版本应用。验证无误后,单击恢复变更,继续下一批次的发布。
您也可以单击当前发布单详情地址,在EDAS控制台的变更记录页面单击开始下一批,继续下一批次的发布。
EDAS容器服务K8s和Serverless K8s交流群
如果您在EDAS中使用容器服务K8s集群和Serverless K8s集群过程中有任何疑问或建议,请使用钉钉搜索钉钉群号23197114加入钉钉群进行反馈。