应用在不断迭代过程中,需要持续集成(CI)和持续部署(CD)。通过自动化的构建集成、测试和循环部署,实现快速交付高质量产品并降低人力成本。本文介绍使用云效2020完成应用的持续集成和部署。
前提条件
开通云效2020。
在EDAS控制台已部署应用。具体操作,请参见在容器服务K8s集群中使用JAR包或WAR包部署应用。
已将业务代码上传至代码库。
云效支持的代码库,请参见流水线源。
业务代码中须包含应用的Dockerfile文件。具体操作,请参见构建仓库与镜像。
背景信息
使用云效2020实现应用的持续集成和部署,您只需要将开发好的新版本应用代码提交到代码库,云效流水线Flow会监听代码事件,当满足触发事件时会触发流水线运行,部署新版本应用到EDAS K8s环境。
代码开发与提交一般由开发人员执行,本文不做介绍。本文仅介绍在云效流水线Flow侧如何创建流水线,并配置代码源、镜像仓库、部署对象和发布策略等操作流程。
步骤一:在云效创建企业
如果您是第一次使用云效Flow,则需要在云效上创建您的企业。
登录云效Flow。
设置企业、组织或团队名称并选择使用规模,单击完成创建。
步骤二:在云效创建流水线
登录云效Flow。
在左侧导航栏,单击我的流水线,然后单击右上角的新建流水线。
在选择流水线模板对话框,在左侧单击Java,在右侧选择Java · 镜像构建,发布到EDAS Kubernetes,然后单击创建。
步骤三:配置流水线
添加代码源。
在流水线的源区域,单击添加代码源。
在添加流水线源面板,选择代码源设置为Codeup,单击添加服务连接。
在新建服务连接对话框,设置服务连接名、服务连接ID、服务授权/证书和使用范围后,单击创建。
在添加流水线源面板,配置流水线源相关信息,然后单击添加。
代码仓库
选择您的代码仓库。
默认分支
选择代码分支。
开启代码源触发
开启代码源触发功能,将Webhook添加到代码仓库,云效流水线Flow会监听代码事件,满足条件时触发流水线运行。
如果使用的是其他代码仓库,可能会涉及到其他触发事件。更多触发事件的信息,请参见触发事件与触发分支。
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创建的应用。
镜像
选择Docker镜像构建所创建的产出物名称。
发布策略
支持分批发布和灰度发布。
发布批次
选择单批次发布,表示不分批发布。
选择批次,如2批,表示按照指定的批次分批发布。
分批等待时间
相邻发布批次之间的等待时间。
分批方式
可选择手动确认或自动确认。例如,如果您需在完成第一批发布时先观察发布结果再决定后续操作,可选择手动确认。
任务插件
您可以根据需要通过配置任务插件发送流水线通知。 具体操作,请参见:
使用 Webhook 插件发送通知
钉钉机器人发送群消息
企业微信机器人发送群消息
飞书机器人发送群消息
步骤四:代码库配置Webhook
在代码库添加云效流水线Flow的代码源触发功能生成的Webhook地址,云效流水线Flow会监听代码事件,当满足触发事件时会触发流水线运行。
本文使用Codeup作为代码库,在代码库配置Webhook的步骤仅作参考,其他代码库请以实际为准。
登录阿里云Codeup控制台,单击目标项目。
在左侧导航栏,单击设置。
在设置左侧导航栏,单击Webhooks。
在Webhooks页面,设置Webhook地址并选中推送事件,然后单击确定。
结果验证
开发者上传应用新版本代码到代码库。
云效流水线Flow监听代码事件,当满足触发事件时会触发流水线运行。
第一批发布完成后,您可以先验证新版本应用。验证无误后,单击恢复变更,继续下一批次的发布。
EDAS容器服务K8s和Serverless K8s交流群
如果您在EDAS中使用容器服务K8s集群和Serverless K8s集群过程中有任何疑问或建议,请使用钉钉搜索钉钉群号23197114加入钉钉群进行反馈。