背景描述
DevOps支持通过将预置好的工具集镜像上传至容器镜像服务云产品后,与流水线的运行脚本类任务相互配合使用,达到扩展DevOps功能的目的。本公司秉承“eat your own dog food & 使用自己的产品设计开发云产品”的设计理念,所以,本公司云平台中所有云产品的发布均是通过DevOps扩展功能支撑实现的,其中不乏外部开发者开发的云产品,如恩耐博慧海数据平台和安全狗云眼平台等。本文将以此为例,介绍如何快速通过DevOps扩展功能,实现云产品的自动化构建并同步发布在OTA服务器中。
本实践方案中,流水线各项规划信息规划如下:
流水线-DevOps扩展功能自动构建发布云产品 | |
---|---|
基本信息 | * 云产品版本号:6.0.1-alpha.${BUILD_ID} * 本流水线各阶段的所有“运行脚本”类型任务中均使用此工具集镜像文件: * 镜像地址:名为 docker 的镜像文件,其作为自有镜像,上传在“容器镜像服务”云产品的工作空间中 * 镜像版本:dind-centos-final-v4 |
Source阶段 | 项目代码使用 build-config.git 仓库下的 master 分支代码 |
Initial阶段 | 通过“运行脚本”类型任务设置 Config 配置文件中的云产品名称 * 脚本:bash common/replace_config_content.sh * 环境变量:COMPONENTS_TO_BUILD = 云产品名称 |
Build阶段 | 通过“登录Harbor”、“检查OTA服务器metadata版本”、“下载registry-cloud-product全量镜像”和“生成云产品manifest”四个任务获得云产品包构建所需的manifest * 登录Harbor:通过“运行脚本”类型任务登录Harbor仓库 * 脚本: docker login hub.example.cn -u ${dockerHubUser} -p $ {dockerHubPassword} docker login hub.example.io -u ${dockerHubUser} -p $ {dockerHubPassword} * 环境变量: dockerHubUser = 登录用户名 dockerHubPassword = 登录密码 * 检查OTA服务器metadata版本:通过“运行脚本”类型任务检查OTA服务器的metadata版本是否重复 * 脚本: bash common/check_cloud_product_metadata.sh * 下载云产品注册镜像:通过“运行脚本”类型任务下载registry-cloud-product全量镜像文件 * 脚本:( 172.16.XX.XX 为本公司File Server的IP地址) cd / && wget -q http://172.16.XX.XX:8000/build_cloud_product_file/x86_64/registry-cloud-product.tar tar -zxvf registry-cloud-product.tar > /dev/null * 生成云产品manifest:通过“运行脚本”类型任务生成云产品的manifest * 脚本: bash product/manifest_generator.sh |
Deploy阶段 | 通过“运行脚本”类型任务构建云产品包并发布在OTA服务器中 * 脚本: bash product/ota_file_uploader.sh |
前提条件
- DevOps流水线需要预先配置承载其运行的Kubernetes集群,具体步骤请参考 配置集群。
- DevOps流水线需要预先关联应用程序源代码的代码仓库,具体步骤请参考 配置代码仓库。
- 本DevOps流水线需要预先获取名为 docker 镜像文件存放在本地计算机中,用于在流水线执行过程中提供工具集镜像。
操作步骤
上传镜像文件。
本实践方案中以在云平台界面上传的方式为例,上传镜像文件。如需从Docker客户端和Containerd客户端中直接推送镜像,请参考“容器镜像服务”帮助中“上传镜像”的相关内容。
创建流水线。
在云平台的顶部导航栏中,依次选择[产品与服务]-[DevOps]-[流水线],进入“流水线”页面。
在“流水线”页面中,单击页面上方的
创建流水线
,弹出“创建流水线”对话框。在“创建流水线”对话框中,选择“从零开始创建”后,单击
创建
,进入“创建流水线”页面。在“创建流水线”页面的画布中,根据本次业务需求配置“Source”、“Initial”、“Build”和“Deploy”阶段后,依次在各阶段完成对应任务配置。
在“Source”阶段添加项目代码源。
在当前画布的“Source”卡片中,单击``添加代码源``,弹出“添加代码源”对话框。在该对话框中,配置代码源信息后,单击
保存
,保存项目的代码源设置,并关闭对话框。分别在“Initial”、“Build”和“Deploy”阶段添加对应的“运行脚本”任务。
在当前画布的对应阶段卡片中,单击
添加任务
,弹出“添加任务”对话框。在该对话框中,“任务类型”选择“运行脚本”,“镜像地址”选择[自有镜像]页签中的“docker”,“镜像版本”选择“dind-centos-final-v4”,并配置名称及对应方案规划信息中的脚本内容和环境变量后,单击保存
,完成任务创建,并关闭对话框。
在“创建流水线”页面的画布中,单击画布右上方的
保存
后,在弹出的“保存”对话框中,选择保存方式后,单击保存
,完成流水线创建,并关闭当前页面。
执行流水线。
本实践方案中以手动触发方式为例,触发流水线执行。如需配置流水线自动触发,请参考 配置流水线执行策略(可选)。
- 在“流水线”页面中,单击上述流水线所在行的
执行
,弹出“执行流水线”提示框。 - 在“执行流水线”提示框中,单击
执行
,执行该流水线,并关闭提示框。
- 在“流水线”页面中,单击上述流水线所在行的
结果验证
确认流水线成功执行。
在“流水线”页面中,单击上述流水线名称 ,进入其详情页面。在详情页面的[运行记录]页签中,确认该流水线执行成功并记录此次“运行编号”。
确认云产品成功发布。
当该云产品在云平台已安装时,请直接执行下述操作。当该云产品还未在云平台安装时,请先在云产品市场中获取该云产品,再执行下述操作。
在云平台的顶部导航栏中,依次选择[产品与服务]-[产品与服务管理]-[已购买云产品],进入“已购买云产品”页面。
在“已购买云产品”页面中,根据该云产品安装状态,酌情选择下述对应操作确认该云产品成功发布。