Loading
close

通过DevOps扩展功能自动构建发布云产品

time 更新时间:2022-03-14 17:38:24

背景描述

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 镜像文件存放在本地计算机中,用于在流水线执行过程中提供工具集镜像。

操作步骤

  1. 上传镜像文件。

    本实践方案中以在云平台界面上传的方式为例,上传镜像文件。如需从Docker客户端和Containerd客户端中直接推送镜像,请参考“容器镜像服务”帮助中“上传镜像”的相关内容。

    1. 在云平台的顶部导航栏中,依次选择[产品与服务]-[容器服务]-[容器镜像服务],进入“镜像管理”页面。

    2. 在“镜像管理”页面中,选择[自有镜像]页签后,单击列表上方的 上传镜像 ,弹出“上传镜像”对话框。

      ../images/bp_image_28.png

    3. 在“上传镜像”对话框中,选择工作空间和本地镜像文件后,单击 上传 ,开始上传镜像文件,并关闭当前对话框。

      ../images/bp_image_29.png

  2. 创建流水线。

    1. 在云平台的顶部导航栏中,依次选择[产品与服务]-[DevOps]-[流水线],进入“流水线”页面。

    2. 在“流水线”页面中,单击页面上方的 创建流水线 ,弹出“创建流水线”对话框。

    3. 在“创建流水线”对话框中,选择“从零开始创建”后,单击 创建 ,进入“创建流水线”页面。

      ../images/gs_image_11.png

    4. 在“创建流水线”页面的画布中,根据本次业务需求配置“Source”、“Initial”、“Build”和“Deploy”阶段后,依次在各阶段完成对应任务配置。

      ../images/bp_image_30.png

      1. 在“Source”阶段添加项目代码源。

        在当前画布的“Source”卡片中,单击``添加代码源``,弹出“添加代码源”对话框。在该对话框中,配置代码源信息后,单击 保存 ,保存项目的代码源设置,并关闭对话框。

        ../images/bp_image_31.png

      2. 分别在“Initial”、“Build”和“Deploy”阶段添加对应的“运行脚本”任务。

        在当前画布的对应阶段卡片中,单击 添加任务 ,弹出“添加任务”对话框。在该对话框中,“任务类型”选择“运行脚本”,“镜像地址”选择[自有镜像]页签中的“docker”,“镜像版本”选择“dind-centos-final-v4”,并配置名称及对应方案规划信息中的脚本内容和环境变量后,单击 保存 ,完成任务创建,并关闭对话框。

        ../images/bp_image_32.png

    5. 在“创建流水线”页面的画布中,单击画布右上方的 保存 后,在弹出的“保存”对话框中,选择保存方式后,单击 保存 ,完成流水线创建,并关闭当前页面。

      ../images/bp_image_07.png

  3. 执行流水线。

    本实践方案中以手动触发方式为例,触发流水线执行。如需配置流水线自动触发,请参考 配置流水线执行策略(可选)

    1. 在“流水线”页面中,单击上述流水线所在行的 执行 ,弹出“执行流水线”提示框。
    2. 在“执行流水线”提示框中,单击 执行 ,执行该流水线,并关闭提示框。

结果验证

  1. 确认流水线成功执行。

    在“流水线”页面中,单击上述流水线名称 ,进入其详情页面。在详情页面的[运行记录]页签中,确认该流水线执行成功并记录此次“运行编号”。

    ../images/admin_bp_image_35.png

  2. 确认云产品成功发布。

    当该云产品在云平台已安装时,请直接执行下述操作。当该云产品还未在云平台安装时,请先在云产品市场中获取该云产品,再执行下述操作。

    1. 在云平台的顶部导航栏中,依次选择[产品与服务]-[产品与服务管理]-[已购买云产品],进入“已购买云产品”页面。

    2. 在“已购买云产品”页面中,根据该云产品安装状态,酌情选择下述对应操作确认该云产品成功发布。

      • 当该云产品为已安装状态时,请首先在该页面中确认,该云产品所在行的“已安装版本”后有“可升级”提示。

        ../images/bp_image_36.png

        然后,在该页面中单击该云产品名称,进入其详情页面。在详情页面的“版本”区域框中,选择[新版本]页签,确认该云产品新版本为“6.0.1-alpha.<运行编号>”。

        ../images/bp_image_37.png

      • 当该云产品为未安装状态时,单击该云产品名称,进入其详情页面。在该页面的“版本”区域框中,确认该云产品版本为“6.0.1-alpha.<运行编号>”。

        ../images/bp_image_38.png

此篇文章对你是否有帮助?
没帮助
locked-file

您暂无权限访问该产品