使用手册

一、编写目的

方便用户快速了解和使用CICD管理系统,节省人工辅导成本。

二、适用范围

1、锐明

备注:内部文档,禁止外传

三、CICD系统介绍

3.1、名词解释

序号概要名词说明
1CICD管理系统面向研发、测试、运维等不同角色的综合平台,整合软件开发、测试和部署各阶段的繁琐流程。通过可视化、配置化、一键化操作,实现DevOps持续交付,提高研发效率、降低成本,并支持云环境与客户私有化部署,尽量减少人工干预。
2私有化运维交付系统
针对运维及前线技术支持/专家设计,按环境维度管理客户局点。该系统从 CICD管理系统 获取发布后的中间件或业务组件包,支持安装、升级、变量同步等运维操作,确保产品部署后达到就绪状态
3客户交付系统
集中管理所有客户的部署模型信息,对接开发内部的统一网关和用户中心,与运营平台打通。同时联动 私有化运维交付系统,实现从部署模型配置到日常运维的全流程一站式管理
4OMS
为「Operation and Maintenance System」的缩写, 专职负责部署工作.
OMS = OMS Server + OMSlet
5CDS
为「Customer Delivery System」的缩写, 客户交付系统系统
6cicd-web
CICD管理系统 的前端组件,负责展示及交互。
7cicd-server
CICD管理系统 的后端组件,通过HTTP接口为 cicd-web 提供服务,主要负责基础信息管理,采用Java开发。
8oms-server
CICD管理系统私有化运维交付系统 共用。它提供HTTP接口,负责运维部署动作的编排与执行,上游对接 cicd-server 和 custom-server,采用Python开发。
9oms-let
安装在目标机上的轻量级代理,封装Shell脚本、加固系统配置,并负责部分常用软件包的安装。通过HTTP接口接收OMS Server下发的命令,采用Shell脚本开发。
10host-baseline
安装在目标机上, 提供系统级文件, 尽可能屏蔽系统差异. 无运行态, 开发语言: Shell.
11cicd-document-web
CICD管理系统 的帮助文档, 属于前端组件。
12jenkins
专用于 CICD管理系统, 利用其Pipeline Job承接流水线的sonar扫描、编译构建、组装包、发版及代码覆盖率等任务.
13COS
CICD管理系统 中的物料库,使用腾讯云的cos对象存储,统一存放组件包,项目版本包,流水线集成包,证书文件等'.

3.2、CICD解决方案总览

3.2.1、逻辑视图

CICD管理系统 由5个逻辑组件组成,如下:

  1. CICD管理系统: 有单独的web管理界面配套, 云环境下的操作入口。

  2. Jenkins: 负责实际的流水线执行, 输出物料(即包文件)。

  3. 物料库: 统一存放物料(一般为构建好的包文件)。

  4. OMS Server: 运维管理系统的服务端, 单独剥离运行以兼容云环境&客户私有化环境的部署。

  5. Machine XXX: 具体部署业务组件的机器节点, 与OMS Server配套使用。

各逻辑组件的关系如图:

逻辑视图

3.2.2、部署视图

部署视图

3.3、CICD管理系统(单品)介绍

CICD管理系统(单品)作为整个解决方案系统门户,提供可视化、可编排的CI/CD持续交付软件生产线,实现DevOps持续交付高效自动化,缩短应用开发到市场交付周期,提升研发效率。

流水线服务本质上是一个可视化的自动化任务调度平台,需要配合服务器中编译构建、代码检查、测试、部署等服务的自动化任务使用。根据需要的场景,如开发测试环境应用部署、生产环境应用部署等,对这些自动化任务进行自定义编排,一次配置后就可以一键自动化触发调度执行,避免频繁低效的手工操作。

3.3.1、业务流程图

业务流程图

3.3.2、CICD解决方案对接规范

不同项目接入CICD管理系统,一般都需要先根据CICD解决方案规范进行相应的组件改造,对接时开发人员可参考文档:对接规范

四、CICD管理系统快速入门

4.1、登录/首页

4.1.1、登录

打开Web浏览器,输入网址 http://cicd.streamax.com:20605/ 后,支持 密码登录钉钉扫码登录 两种方式

密码登录

密码登录

说明:

  1. 默认账号密码为 工号/Streamax@2023

钉钉扫码登录

钉钉扫码登录

说明:

对于钉钉扫码登录新用户

  1. 默认未设置密码, 需要登录后由操作者自行去个人中心设置密码, 设置密码后, 同一账号即可支持密码登录
  2. 角色默认为游客, 若需要更改角色(如更换为开发测试等), 需要联系CICD当月支持人做修改。
  3. 账号未归属团队, 若需要分派团队, 请联系对应团队负责人参考4.2.1章节关联团队。

4.1.2、主页界面

登录成功之后,默认进入主页。页面左边区域为一级菜单,鼠标点击一级菜单,拥有二级菜单的一级菜单会对应展开。

主页界面

4.1.3、退出登录

鼠标悬浮至右上角的用户姓名后会展开个人中心,点击【退出登录】按钮即可退至登录界面。

退出登录

4.2、团队管理

4.2.1、编辑团队成员

团队研发负责人 登录系统后,进入 系统管理->团队管理 页面,选择本团队,点击操作栏对应的编辑团队按钮,可以维护本团队的开发、测试、运维人员。

编辑团队人员

说明:

  1. 团队成员才能维护本团队的环境、版本、流水线信息等。

4.3、组件管理

4.3.1、添加业务组件

团队研发负责人 登录系统后,进入 版本管理->组件管理->业务组件页面,选择本团队,点击【添加组件】按钮,输入组件信息后,点击【保存】按钮即可添加组件。

添加业务组件界面图

说明:

  1. 添加组件的名称 必须 与代码打出来的组件包名一致;
  2. 所有团队的组件名称 不可重复

添加组件后,点击操作栏查看版本按钮,可以直接跳转到对应的组件版本列表。

业务组件列表图

4.3.2、中间件管理

用户登录系统后,进入 版本管理->组件管理->中间件 页面,可查看CICD管理系统当前支持的中间件列表,点击操作栏查看版本按钮,可以直接跳转到对应的中间件版本列表。

业务组件列表图

说明:

  1. 目前中间件 && 中间件版本信息均由 CICD团队成员 人工维护。

4.4、项目管理

4.4.1、添加项目

团队研发负责人 登录系统后,在 版本管理->项目管理 页面,选择本团队,点击【添加项目】按钮,输入项目信息后,点击【保存】按钮即可添加项目。

添加项目图

说明:

  1. 项目名称 不可重复
  2. 项目名称须 与RDMS保持一致(便于后续版本与RDMS进行数据同步)。

4.5、组件版本管理

4.5.1、添加业务组件

团队研发负责人登录系统后,在“版本管理-组件管理-业务组件”页面,选择本团队,点击【添加组件】按钮,录入团队的组件信息后,点击【保存】按钮即可添加组件。

添加业务组件

4.5.2、添加业务组件版本

项目版本的开发负责人登录系统后,在“版本管理-组件版本管理-业务组件”页面,选择本团队组件,点击【添加组件版本】按钮,根据《CICD-项目版本发布清单Checklist.xlsx》文档录入组件版本信息后,点击【保存】按钮即可添加组件版本。

添加业务组件版本图

说明:

  1. 添加的组件版本号 必须 与代码打出来的组件版本号一致;
  2. 同一个组件版本号不可重复;
  3. 添加组件版本时,若该组件版本存在依赖组件,那么在运行环境流水线时,在依赖组件流水线运行完成后才会触发该组件流水线运行。

4.5.3、中间件版本管理

用户登录系统后,进入版本管理->组件版本管理->中间件页面,可查看CICD管理系统当前支持的中间件版本列表。

中间件版本管理图

说明:

  1. 目前中间件版本信息由CICD团队成员人工导入数据;
  2. 目前仅CICD团队人员/运维人员有中间件版本打包、发布的操作权限;
  3. 版本状态为已发布/打包完成的中间件版本可以用于中间件环境的配置及部署,中间件环境配置页面会自动过滤打包失败/打包中状态的中间件版本。

4.6、项目版本管理

4.6.1、添加项目版本

项目版本的开发负责人登录系统后,在版本管理->项目版本管理页面,选择本团队项目,点击【添加项目版本】按钮,点击【保存】按钮即可添加项目版本。

添加项目版本图

说明:

  1. 同项目版本号不可重复

4.6.2、项目关联组件

步骤一:进入版本管理->项目版本管理列表页面,点击 “软件版本号” 进入项目版本详情页面。

项目关联组件图

步骤二:切换到组件管理页面,点击 “关联组件” 按钮,进行关联组件操作。

项目关联组件图

步骤三:录入项目版本关联的组件信息后,点击 “保存并返回” 按钮即可保存项目关联组件。

项目关联组件图

4.6.3、发布项目版本

步骤一:团队研发负责人登录系统后,进入“流水线管理-流水线”,选择团队-项目后,运行包含DEV/SIT/UAT环境的该项目版本的最外层流水线(该流水线主要是确保SIT/UAT环境集成包能与DEV环境保持一致,不会出现人为的配置错误问题)。

发布项目版本图

步骤二:团队研发负责人进入“版本管理-项目版本管理”页面,选择需要发布的项目版本记录,点击“发布”按钮。

发布项目版本图

  1. 项目版本对应的所有流水线运行成功,且发布时项目版本关联流水线对应的release分支没有提交新的代码,才能发布成功;
  2. 流水线运行完成后,最好是测试人员进行主流程与自动化进行验证,确保部署没问题后,再进行项目版本发布操作;
  3. 项目版本发布成功后,关联的流水线不能编辑、删除;
  4. 项目版本发布成功后,项目版本信息及关联的组件版本信息不能编辑、删除;
  5. 项目版本发布成功后,即可在项目版本列表下载项目安装包,或进入“下载管理-版本下载”模块,下载项目版本关联的流水线安装包。

发布项目版本图

4.6.4、组件后移

步骤一:进入版本管理->项目版本管理列表页面,点击 “软件版本号” 进入项目版本详情页面。

组件版本后移图

步骤二:切换到组件管理页面,点击 “组件后移” 按钮,进行组件后移操作。

组件版本后移图

步骤三:录入新的项目版本号,以及组件版本号之后,点击"保存"按钮,会自动创建与该版本相同的组件,并自动绑定关联关系。

组件版本后移图

说明:

  1. 组件版本若已存在, 则不会创建新的组件版本,只会绑定新的项目与组件的关联关系
  2. 组件版本若不存在, 则会新创建组件版本,并绑定组件与项目的关联关系
  3. 建立组件版本后,不会创建分支,需要由研发同学自己拉取分支
  4. 组件与项目关联关系建立错误,需要在界面上手动删除

4.6.5、版本SQL合并导出

步骤一:进入版本管理->项目版本管理列表页面,点击 “下载” 弹出下载界面。

版本SQL合并导出图

步骤二:点击 "SQL导出" 按钮。

版本SQL合并导出图

步骤三:选择需要导出的起始版本号,点击 “确定” 导出SQL。

版本SQL合并导出图

说明:

  1. 选择的版本SQL不会被导出。此处设定为导出的升级SQL合并,起始版本认为已经部署,所以不导出
  2. 导出规则,根据版本发布顺序与P版本顺序导出。

4.7、主机管理

4.7.1、添加/导入主机

在“环境管理-主机管理”页面,选择本团队主机组后,点击【添加主机】按钮,录入主机信息后,点击【保存】按钮即可添加主机。

添加/导入主机图

说明:

  1. 导入主机步骤类似,主机导入模板如下:主机导入模板.xlsx
  2. 若主机类型为物理机/超融合,需要正确配置IP所属的“地域”信息
  3. 若主机需要安装MinIO, 视其部署模式按需申请专用的数据盘.

4.7.2、免密配置

添加/导入主机后,点击“免密配置”按钮,输入主机的ssh登录信息,点击“保存”,系统会自动进行免密配置。

免密配置图

4.8、变量模板管理

4.8.1、添加变量模板

团队开发/测试/运维人员登录系统后,进入“环境管理-变量模板管理”页面,选择本团队,点击【添加模板】按钮,输入模板名称后保存即可。

img.png

4.8.2、删除整套变量模板

团队开发/测试/运维人员登录系统后,进入“环境管理-变量模板管理”页面,选择本团队,选择模板,点击删除图标,确认删除后即可删除该模板下的所有环境变量。

删除整套环境变量模板图

4.8.3、添加模板变量

团队开发/测试/运维人员登录系统后,进入“环境管理-变量模板管理”页面,选择团队-标签后,点击“添加环境变量”按钮,录入模板变量信息。

添加环境变量图

说明:

  1. 各团队开发各自维护所属团队的变量模板。团队开发/测试/运维人员按需使用。
  2. 根据4.9.2.4章节业务环境配置环境变量时,可选择通过模板导入方式按需使用该处配置的变量模板。
  3. 推荐使用通过模板导入方式为业务环境配置环境变量。

4.9、环境管理

4.9.1、添加中间件环境

添加中间件环境图

说明:

  1. 一个中间件环境可以被多个业务环境使用。
4.9.1.1、添加中间件环境

一般由团队运维人员登录系统后,在“环境管理-环境管理”页面,切换到“中间件环境”的Tab页,选择对应的环境级别后,点击【添加环境】按钮,输入环境信息后点击【保存】。

添加中间件环境图

4.9.1.2、中间件环境关联主机

点击对应环境记录的操作栏【关联主机】按钮,对所选中间件环境进行关联主机操作。

中间件环境关联主机图

4.9.1.3、中间件配置

点击对应环境记录的操作栏【中间件环境初始化】按钮,跳转到环境初始化页面,点击【中间件配置】按钮,选择需要的中间件名称、中间件类型、部署主机后,点击【保存】按钮即可添加中间件配置。

中间件配置图

说明:

  1. 使用CICD管理系统配置OCI时,上传的config.ini文件中的pem文件路径需要提前修改为 /iotp/cloud\_config/oci/$\{pem文件名称\} ,如下: pem文件修改图
4.9.1.4、安装中间件

方案一:配置完成后,点击【一键安装】,系统会自动根据中间件间依赖关系依次安装环境关联的各个中间件。

安装中间件图

方案二:根据依赖关系依次安装中间件(比如:nacos依赖数据库,就需要先安装数据库,再安装nacos)。

安装中间件图

说明:

  1. 目前中间件安装没有显示进度,点击【一键安装】或【安装】按钮,需稍等几分钟后刷新查看中间件安装状态,或点击【查看日志】了解中间件安装进度:
  2. “-”——未安装;
  3. “未运行”——全部安装成功,运行失败;
  4. “运行中”——全部安装运行成功;
  5. “部分运行”——部分安装运行成功,点击“查看明细”可查看主机列表及对应状态。
  6. 目前【查看日志】页面仅显示最近一次操作记录的日志信息。
4.9.1.5、启用中间件环境

返回中间件环境列表,启用中间件环境。

启用中间件环境图

4.9.2、添加业务环境

4.9.2.1、添加业务环境

团队开发/测试/运维人员登录系统后,进入“环境管理-环境管理-业务环境”页面,选择本团队后,点击【添加环境】按钮,输入环境信息后,点击【保存】按钮即可添加业务环境。

添加业务环境图

说明:

  1. 业务环境列表默认加载DEV环境、SIT环境、UAT环境 三个初始化环境,初始化的环境不可删除;
  2. 初始化环境,中间件环境、负责人默认为空,且环境级别不可编辑。因此使用系统初始化环境时需要先点击编辑环境信息,关联中间件环境、负责人,如下:

添加业务环境图

  1. 建议添加业务环境时根据项目划分。
4.9.2.2、业务环境关联主机

在“环境管理-环境管理”页面,选择团队,点击环境名称进入环境详情页面后,点击【关联主机】按钮,即可进行关联主机操作。

业务环境关联主机图

业务环境关联主机图

说明:

  1. 不同团队,可关联相同的主机;
  2. 相同团队,不同环境不能关联同一个主机。
4.9.2.3、主机关联组件

在“环境管理-环境管理”页面,选择团队,点击环境名称进入环境详情页面后,选择对应主机,点击操作栏【】按钮后,可进行关联组件操作。

主机关联组件图

4.9.2.4、业务环境配置环境变量

img.png

目前支持3种方式添加环境变量:模板导入(推荐)手动添加导入环境变量

1、模板导入: 环境详情 -> 环境变量 -> 添加环境变量 -> 模板导入

来源:

变量模板管理

2、手动添加: 环境详情 -> 环境变量 -> 添加环境变量

来源:

手动录入

3、导入环境变量: 环境详情 -> 环境变量 -> 导入环境变量

来源:

环境详情 -> 环境变量 -> 导入环境变量 -> 下载模板

环境详情 -> 环境变量 -> 导出环境变量

变量模板管理 -> 导出配置文件

4.9.3、中间件版本升级/降级(自建类型中间件)

步骤一:点击对应环境记录的操作栏【中间件环境初始化】按钮,跳转到环境初始化页面。

中间件版本升级/降级图

步骤二:卸载对应中间件后,删除中间件配置记录(卸载mariadb、nacos、clickhouse-server等会同时删除数据,若需要保留数据请提前进行数据备份,谨慎操作!)。

中间件版本升级/降级图

步骤三:点击“中间件配置”按钮,配置对应需要升级/降级的中间件版本后,重新安装中间件,即可完成中间件版本升级/降级(数据还原需要人工操作)。

中间件版本升级/降级图

4.9.4、修改业务环境-升级/降级版本

在“环境管理-环境管理”页面,选择团队,点击需要升级版本的业务环境名称进入环境详情页面后,选择主机后,点击关联组件/批量关联组件按钮,重新选择项目版本信息,配置主机、组件关联关系后保存。

修改业务环境-升级/降级版本图

4.9.5、修改业务环境-缩容

参考4.12章节,进入“环境管理-集群管理”模块,选择卸载该环境对应主机上的组件后,修改环境的主机组件关联关系,剔除主机上卸载了的组件,即完成业务环境缩容。

4.9.6、修改业务环境-扩容

  1. 根据4.7章节添加主机;
  2. 根据4.9.4章节修改业务环境的主机关联组件配置,然后重新选择原运行环境添加新的流水线后,再运行新添加的流水线后,即完成业务环境扩容。

4.9.7、环境复制

需求目的:提升研发搭建环境效率。

复制规则

环境复制

  1. 新主机选项包含团队下环境类型相同的所有主机。
  2. 根据用户配置的主机映射关系,系统自动创建新业务环境,并建立主机、组件关联关系。
  3. 新环境的环境变量值、外部IP配置、南/北向IP、Nginx配置及配置文件内容,将按照主机映射关系自动替换IP地址。

注:外部域名、多域名证书、流水线不同环境无法复用,不进行复制 。

中间件环境主机信息复制

  1. 新主机选项包含团队下类型相同且未被中间件环境关联的主机。
  2. 根据用户配置的主机映射关系,系统自动建立新中间件环境,并建立主机关联关系。
  3. 复制内容包括中间件参数配置、中间件主机绑定信息, 将按主机映射关系自动替换IP。
  4. 中间件环境复制完成后,需要手动触发中间件安装流程,系统会提供相应的安装引导链接。
  5. 选择复用中间件环境时,系统会直接绑定用户选择的中间件环境。

注:minio、grafana-agent、云中间件不同环境无法复用,不进行复制。

部署版本信息复制

  1. 项目版本选项包含团队-项目下的所有项目版本。
  2. 系统按照原环境的部署模型,自动创建新业务环境,并建立主机、组件关联关系。

注:当复制的目标项目版本出现组件增加或减少时,复制的新环境不会绑定新增组件、删除组件,可在复制完成后,通过环境管理-关联组件功能调整部署模型

使用方法

  1. 根据4.7章节按需添加主机,并做主机免密。
  2. 在账号所属团队下找一个正常的环境。
  3. 点击 “复制” 按钮, 填写 IP 即可。

进入环境管理,选择业务环境,找一个适用的环境,点击 “环境复制” 按钮,如下图所示:

点击复制环境

填写IP , 此处填写新环境的IP即可, 支持使用其他环境的中间件,如下图所示:

填写新环境IP

复制成功后,根据提示,跳转到中间件环境,进行中间件安装,如下图所示:

填写新环境IP

4.10、网络配置

本模块主要作用为配置网络信息,包含外部IP、南北向IP、Nginx配置、域名证书。

4.10.1、添加外部IP/域名

团队开发/测试/运维人员登录系统后,进入“环境管理”模块,选择指定业务环境,进入“业务环境详情-网络配置-外部IP/域名”页面,点击按钮【添加外部IP/域名】添加外部IP/域名,如下图所示:

添加外部IP图

4.10.2、南/北向IP

团队开发/测试/运维人员登录系统后,进入“环境管理”模块,选择指定业务环境,进入“业务环境详情-网络配置-南/北向IP”页面,点击按钮【添加南/北向IP】添加南/北向IP,如下图所示: 添加南/北向IP图

*说明:

  1. 南向与北向IP选项来源:外部IP、服务域名。

  2. 适用组件:本条配置生效的组件范围。

  3. 当nacos配置上面,带IP的实例配置文件已经存在时,会跳过更新该nacos配置。

  4. 作用于"south_ip()" 、 "north_ip()" 变量。

4.10.3、域名证书

团队开发/测试/运维人员登录系统后,进入“环境管理”模块,选择指定业务环境后,进入“业务环境详情-网络配置-域名证书”页面, 即可配置默认域名与多域名。

  1. 默认域名证书

(1) 一个环境内只能配置1条。

(2) nacos上面证书配置更新与否,取决于env_cert()函数的使用与否。

(3) 证书文件推送固定推送至目标机器目录:/iotp/network/nginx/ 下, 如果目标机器上没部署使用env_cert()函数的组件也一样会推送。

(4) 该处的域名字段将作为南北向IP的南向与北向选项来源。

(5) 业务组件部署时,该处的证书配置也会自动生效, 并且证书文件也会覆盖掉目标机器上的。

(6)nacos配置更新后,不仅对应的组件会重启,同时依赖这些组件的依赖组件也会自动重启。

  1. 添加多域名证书

团队开发/测试/运维人员登录系统后,进入“环境管理”模块,选择指定业务环境,进入“业务环境详情-网络配置-域名证书”页面,点击按钮【添加域名证书】添加域名证书,如下图所示:

域名证书上传图

说明:

(1) 一个环境内可配置多条多域名证书。

(2) 域名证书选项值来源为“外部IP/域名”模块添加的域名记录。

(3) 运行流水线后证书推送至目标机器目录:/iotp/network/nginx/${域名名称}/下。

(4) 如果服务域名和应用域名使用同一套证书,也需要分别配置服务域名和应用域名

4.10.4、Nginx配置

步骤一:团队开发/测试/运维人员登录系统后,进入“环境管理”模块,选择指定业务环境,进入“业务环境详情-网络配置-Nginx配置”页面, 点击按钮【添加Nginx文件】即可进行Nginx配置,如下图所示:

添加Nginx文件图

步骤二:点击【添加NGINX文件】后,需选择生成好的nginx配置文件进行上传,以及选择要推送的主机后进行保存,如下图所示:

Nginx文件配置图

步骤三:如要修改Nginx配置内容,可点击文件名称,打开编辑页面进行在线编辑,如下图所示:

Nginx文件配置图

步骤四:Nginx配置添加完成后,选择需要进行推送的配置记录并点击【推送到主机】,系统会将对应的文件同步到对应的目标机的/etc/nginx/conf.d目录下,同时可点击【查看日志】按钮查看推送日志详情:

Nginx文件推送图

说明:

1.Nginx配置文件需提前准备,CICD仅做文件的推送。推送后cicd会调用 nginx -t ng.conf 进行语法校验。

2.推送的主机范围是添加Nginx配置时选择的主机,未被nginx配置关联的主机不受影响。

4.11、流水线管理

4.11.1、添加流水线

团队研发负责人登录系统后,进入“流水线管理-流水线”页面,选择团队-项目,点击【添加流水线】按钮后,依次输入流水线基本信息、选择流水线模板后,点击【保存】按钮即可添加流水线。

添加流水线图

说明:

  1. 目前仅研发负责人及开发人员有权限添加、编辑、删除、复制流水线权限,测试人员只有本团队运行、查看流水线权限。
  2. 建议发布流水线创建时需包含DEV-SIT-UAT环境,研发、测试、运维人员可以运行登录账号权限范围内的环境流水线、组件流水线(目前各环节是独立运行的);
  3. 同一条流水线DEV-SIT-UAT环境对应关联的项目版本及组件版本必须一致,否则无法添加成功(不同环境的部署模型可以不一致,例如:DEV/SIT是单机环境,UAT是集群环境)。
  4. 流水线"是否用于发版"(V1.2.0新增), 该选项与最终发版强相关,若选择“不发版” 在最后发版流水线时,会无法选中。 通过“流水线编辑”可调整该属性。 流水线是否用于发版

4.11.2、添加流水线-升级/降级版本

场景一:同版本迭代升级,且没有组件信息变更

直接再次运行原流水线,即可升级该业务环境上的组件版本。

场景二:同版本迭代升级,有组件信息变更

根据4.9.4章节先修改业务环境信息,然后重新选择原运行环境添加新的流水线,运行新添加的流水线升级该业务环境上的组件版本。

场景三:相邻版本迭代升级

根据4.9.4章节先修改业务环境的主机关联组件配置(低版本->高版本/高版本->低版本),然后重新选择原运行环境添加新的流水线后,再运行新添加的流水线升级业务环境上的组件版本

说明:

  1. 同版本迭代升级指流水线对应的组件版本代码可以持续更新,直到发布;
  2. 同版本迭代升级时,若存在SQL变更,需要人工介入进行手动操作;
  3. 运行流水线升级业务环境时,若存在减少组件,需要先在“环境管理-集群管理”模块卸载该环境上的组件后,才能剔除主机-组件关联关系;
  4. 运行流水线升级业务环境时,若存在增加组件,默认会进行全新安装操作;

4.11.3、运行流水线

步骤一:团队开发/测试/运维人员登录系统后,进入在“流水线管理-流水线”页面,选择团队-项目后,点击指定流水线名称,进入环境流水线列表。

运行流水线图

步骤二:在环境流水线列表,开发、测试、运维人员可运行对应环境级别的环境流水线/组件流水线。

运行流水线图

说明:

  1. 流水线运行成功后,可以参考4.10.4章节修改Nginx配置。

步骤三:在流水线运行弹窗中,开发、测试、运维人员可选择附加服务以及选择C++覆盖率策略(仅C++组件可选策略),并点击运行。

运行流水线图

步骤四:在DEV环境流水线或DEV环境下的组件流水线运行弹窗中,开发人员可勾选附加服务-提取词条,并点击运行。

运行流水线图

开启提取词条日志图

说明:

  1. 开启词条提取的H5、Java组件构建时会将当前组件的所有环境变量存储到组件构建的根目录下的cicd_term.ini文件中,并在构建脚本调用时传输词条开启参数。
  2. 仅DEV环境支持词条提取功能,其他环境不支持。
  3. 若组件自身构建脚本未改造适配,则开启提取词条策略也不会生效(适配请找@胡瑞)。

4.11.4、查看流水线运行详情

4.11.4.1、查看环境流水线最近运行详情

运行流水线后,团队开发/测试/运维人员点击指定流水线最近运行次数,进入环境流水线最近运行详情页面。

查看环境流水线最近运行详情图

进入环境流水线运行详情页面后,点击组件名称可跳转到对应环境组件的组件流水线运行详情页面。

查看环境流水线最近运行详情图

4.11.4.2、查看环境流水线运行历史

运行流水线后,团队开发/测试/运维人员点击指定流水线最近运行次数,进入环境流水线最近运行详情页面后,可以切换到“运行历史”Tab页面。

查看环境流水线运行历史图

4.11.4.3、查看环境流水线部署历史

运行流水线后,团队开发/测试/运维人员点击指定流水线最近运行次数,进入环境流水线最近运行详情页面后,可以切换到“部署历史”Tab页面。

查看环境流水线运行历史图

4.11.4.4、查看环境流水线部署日志

运行流水线后,团队开发/测试/运维人员点击指定流水线最近运行次数,进入环境流水线最近运行详情页面后,可以切换到“部署历史”Tab页面,点击部署记录,可以跳转到部署详情页面查看环境流水线部署单、部署日志。

查看环境流水线部署日志图

4.11.4.5、查看环境流水线代码覆盖率

运行流水线后,团队开发/测试/运维人员点击指定流水线最近运行次数,进入环境流水线最近运行详情页面后,可以切换到“部署历史”Tab页面

步骤一:针对JAVA组件,需要在流水线关联的业务环境-环境变量信息中添加如下环境变量,开启JAVA代码覆盖率开关

开启JAVA代码覆盖率开关

针对C++组件,在运行包含C++组件的环境流水线或者C++组件流水线时,需要选择开启C++代码覆盖率。

开启C++代码覆盖率开关

步骤二:点击生成覆盖率按钮后,会弹出可生成覆盖率的组件列表,团队开发/测试/运维人员可按需选择生成覆盖率的组件。

环境流水线部署历史列表图

环境流水线生成覆盖率报告选择组件弹窗图

步骤三:覆盖率生成成功后,可点击部署历史列表对应的指标数据,跳转查看各组件的覆盖率以及具体的html报告。

跳转覆盖率详情界面按钮图

查看环境流水线覆盖率详情列表图

单组件html代码报告图

说明:

  1. 针对环境流水线,须环境下的所有组件部署成功才会显示生成代码覆盖率入口。
  2. 所选组件,未开启代码覆盖率开关或没有对接代码覆盖率改造时,生成的覆盖率结果可能为0%,建议和项目开发负责人确认对应版本是否支持了生成代码覆盖率功能。
  3. 目前CICD已支持代码覆盖率范围指定,为进一步提升代码覆盖率准确性,建议各产品线参考《CICD 代码覆盖率范围指定.pdf》文档指定有效业务代码范围。
4.11.4.6、查看组件流水线构建/部署日志

步骤一:点击环境流水线名称后,进入组件流水线列表。

查看组件流水线构建/部署日志图

步骤二:点击指定组件运行次数,进入组件流水线运行详情页面。

查看组件流水线构建/部署日志图

步骤三:进入组件流水线运行详情页面,可查看组件最近运行、组件运行历史、组件部署历史及组件的构建、部署日志等信息。

查看组件流水线构建/部署日志图

步骤四:进入组件部署历史界面。可点击生成代码覆盖率,以及查看跳转组件覆盖率报告。

查看组件流水线部署历史图

查看组件流水线代码覆盖率报告图

4.11.5、流水线回滚/重试

4.11.5.1、环境流水线重试

参考4.11.3章节,进入环境流水线列表页面,点击“重试”按钮即可进行相关操作:

  1. 只有环境流水线最新运行记录是失败时,才会显示重试按钮。
  2. 重试时,会自动选择最新一次环境流水线运行记录中失败的组件流水线,进行重新运行。 环境流水线重试图

环境流水线重试确认图

4.11.5.2、组件流水线回滚/重试

参考4.11.4.5章节,进入组件流水线部署历史页面,点击“回滚”、“重试”按钮即可进行相关操作:

  1. 所有部署成功的部署历史记录可以进行回滚操作;
  2. 只有最新部署记录是失败/取消状态时,才会显示重试按钮。

流水线回滚/重试图

流水线回滚/重试图

4.11.6、版本提测

日常开发过程中开发人员运行DEV环境流水线时默认选择develop分支,准备进行版本提测时,项目版本负责人需要选择release分支运行流水线进行自验证,验证通过后才能提测。

版本提测图

说明:

  1. DEV环境运行组件流水线时,默认develop分支,不可选择;
  2. SIT、UAT运行环境/组件流水线时分支默认release分支,不可选择。

4.11.7、制作/下载测试包

日常迭代过程中,由于临时验证、升级需要制作/下载测试包时,可以点击关联对应项目版本的流水线记录,进入环境流水线最近运行详情页面后,切换到“部署历史”Tab页面,点击运行成功的部署记录,跳转到环境流水线部署单页面制作测试包,打包完成后即可下载测试包。

  1. 制作测试包

制作测试包图

说明:

  1. 只有部署成功状态的部署单,“制作测试包”按钮才可激活点击;
  2. 下载测试包

下载测试包图

4.12、集群管理

团队开发/测试/运维人员登录系统后,进入环境管理-集群管理页面,选择团队、业务环境后,可查看环境中集群、实例的运行状态,对指定集群、实例、主机进行启动、停止、重启、卸载、查看日志、刷新等操作。

集群管理图

说明:

  1. 进行卸载操作时,不会卸载 mariadbclickhouse 的数据, 需要人工操作.

4.13、账户管理

在账户管理模块,可添加账户,并对已存在的账户进行查询,修改,删除等操作。

4.13.1、添加账户

配置管理员登录系统后,进入系统管理-账户管理页面,点击【添加账户】按钮,弹出添加账户弹出框,在弹出框内输入账户信息,点击保存,即可添加成功。

添加账户图

4.13.2、搜索账户

配置管理员登录系统后,进入系统管理-账户管理页面,在右上角搜索框内输入需要查询的姓名、账号,点击如下图标注2的搜索按钮,或者enter键,即可模糊搜索出满足条件的账户信息。

搜索账户图

####4.13.3、编辑账户 配置管理员登录系统后,进入系统管理-账户管理页面,点击操作栏对应的编辑账户按钮,弹出编辑账户弹出框,在弹出框内编辑账户信息,点击保存,即可更新成功。

编辑账户图

####4.13.4、删除账户 配置管理员登录系统后,进入系统管理-账户管理页面,点击操作栏对应的删除账户按钮,弹出删除账户确认框,点击【确定】按钮,即可删除成功。

删除账户图

4.14、操作日志

登录系统后,进入日志管理-操作日志页面,可以查看系统相关的操作日志,且可根据操作时间段、操作人、操作类型、操作内容搜索日志记录。

操作日志图

4.15、Prometheus监控

1.根据4.9.1章节配置部署Prometheus、grafana-server、node_exporter中间件后,访问Grafana界面,即可根据项目需要导入相关模板监控主机CPU、内存、磁盘等信息,Grafana访问地址如下:

http://${Grafana所在服务器IP, e.g:192.168.136.13}:13000

默认账号密码:admin/admin

说明:

(1) 使用CICD部署的Prometheus,端口默认为19090,协议类型为http。

2.登录Grafana后,监控模板导入步骤如下:

Prometheus监控图

Prometheus监控图

3.示例模板监控效果如下:

Prometheus监控图

4.16、接口自动化测试接入

4.16.1、Jmeter项目接入步骤

4.16.1.1、在项目中增加Python脚本

1、到如下svn路径下获取send_data.py脚本文件,添加至项目对应目录。

https://183.66.242.6:6767/svn/Test/自动化/jmeterCase/CICD-JmeterDemo

jmeterCase1

2、进入对应的项目,点击左侧菜单栏中的“工作空间”选项,确认项目中正确加载了必要的目录和脚本,参考如下: jmeterCase2

4.16.1.2、修改Jenkins配置

1、进入对应的项目,点击左侧菜单栏中的“配置”选项,‌进入项目配置页面。 jmeterCase3

2、增加taskCode参数(接口自动化结束后taskCode作为CICD回调的任务执行唯一凭证,默认值可以设置为0)。 jmeterCase4

3、增加构建后步骤,如下: jmeterCase5

4、点击“Add build step”按钮,选择“Execute Windows batch command”执行Windows批处理命令。 jmeterCase6

5、输入如下命令,用于在执行自动化测试结束后,‌调用Python脚本发送数据给CICD管理系统。

D:\Tools\Python\python.exe %WORKSPACE%\send_data.py  "%JOB_URL%"  "%BUILD_URL%" "%BUILD_RESULT%" "%taskCode%" "%WORKSPACE%\report\jtl\TestReport_%Build%_%EV%.jtl"

jmeterCase7

6.选中所有构建条件后保存即可,如下: jmeterCase8

4.16.2、Python项目接入步骤

4.16.2.1、在项目中增加Python脚本

1.使用部门python接口自动化框架的项目不需要增加Python脚本。

2.未使用部门python接口自动化框架的项目,可到如下svn路径下获取脚本文件参考进行数据统计方法改造,然后添加至项目对应的同级目录下。

https://183.66.242.6:6767/svn/Test/自动化/api_automation/AutoX/src/cicd

3.进入对应的项目,点击左侧菜单栏中的“工作空间”选项,确认项目中正确加载了必要的目录和脚本,参考如下: jmeterCase9 jmeterCase10

4.16.2.2、修改Jenkins配置

1.进入对应的项目,点击左侧菜单栏中的“配置”选项,‌进入项目配置页面。 jmeterCase11

2.增加taskCode参数(接口自动化结束后taskCode作为CICD回调的任务执行唯一凭证,默认值可以设置为0)。 jmeterCase12 jmeterCase13

3.增加构建后步骤,如下: jmeterCase14

4.点击“Add build step”按钮,选择“Execute shell”用于执行shell脚本。 jmeterCase15

5.输入如下命令,用于在执行自动化测试结束后,‌调用Python脚本发送数据给CICD管理系统。

python3 $WORKSPACE/cicd/send_data.py  "$BUILD_URL" "$taskCode" "$BUILD_RESULT"

jmeterCase16

6.选中所有构建条件后保存即可,如下: jmeterCase17

4.16.3、流水线接口自动化测试集成配置

1.添加流水线时,须选择包含“验证”阶段的流程配置模板; jmeterCase18

2.点击“添加”按钮后,跳转到流程配置页面,点击“接口自动化”任务名称,进入编辑任务页面。

  • a.任务名称:默认显示为接口自动化,支持修改,建议一般可不修改任务名称。

  • b.Jenkins自动化参数配置:

    • i.环境级别:与添加流水线时选择的环境级别保持一致,没有的环境级别则不显示,默认优先显示DEV->SIT->UAT,每一个环境级别下都可设置Jenkins项目地址,并通过解析项目地址获取Jenkins构建参数。

    • ii.Jenkins项目地址:测试部自动化jenkins服务器对应项目的外网地址,如:

      http://183.66.242.6:6780/view/CICD/job/CICD-JmeterDemo/job/CICD-JmeterDemo/

    • iii.Jenkins构建参数:取值与测试自动化jenkins项目中的构建参数(参数名称、参数描述、参数值)保持一致。获取时,如果有值的则显示为必填项,无值的显示为非必填项。

*说明:

  • 1.Jenkins项目地址必须为对应项目job路径,如为文件夹路径则无法正确解析构建参数信息。

  • 2.Jenkins构建参数目前仅支持文本输入框(String Parameter)、单选下拉框(Choice Parameter)、多选/复选框(Extended Choice Parameter)这几类执行参数转换,暂不支持日期等执行参数格式!

  • 3.本迭代(V1.1.4版本)的接口自动化暂不支持并行任务,每一个环境仅支持配置1个Jenkins项目地址。

五、附录

5.1、CICD解决方案支持情况

5.1.1、项目支持情况

团队名称项目名称组件名称支持情况备注
S17S17-V3.x (${项目版本号}>=V3.16.2)dgw支持
dcs支持
api-gw支持
oms支持
djms支持
fms支持
dfds支持
dpgw支持
mms支持
gbs支持
ms支持
mrs支持
mts支持
dpcs支持
pdgw支持
mdgw支持支持业务环境中同时包含mdgw、ms时,ms配置使用mdgw端口
S17-V3.x (${项目版本号}>=V3.16.2)streamax-player支持支持业务环境中同时包含mdgw、ms时,ms配置使用mdgw端口
streamax-player-version-manager支持支持业务环境中同时包含mdgw、ms时,ms配置使用mdgw端口
中台Firefly-V2.X (${项目版本号}>=V2.12.2-P7)base-gateway-service支持
base-config-service支持
base-server-service支持
base-metadata-service支持
base-evidence-service支持
base-search-service支持
base-msg-service支持
base-flow-service支持
base-driver-service支持
base-face-algorithm支持
base-face-service支持
base-archiver-service支持
base-data-reports支持
base-config-reports支持
base-etl-reports支持
runtime-starry-base支持
runtime-starry-pages支持
runtime-starry-core支持
runtime-starry-components支持
saas-web支持
base-mobile-web支持
backstage-web支持
base-login-web支持
Crocus-V3.X (${项目版本号}>=V3.4.0-P1)base-crocus-service支持
base-crocus-web支持
dev-ops-backstage-web支持
Liense-V2.X (${项目版本号}>=V2.12.3)license-web支持
base-license-service支持
Algorithm-V2.x (${项目版本号}=V2.12.2-Cmexico)base-face-algorithm支持
FTFT-V3.X (${项目版本号}>=V3.13.1ft-manager支持
FT-V3.X (${项目版本号}>=V3.13.1ft-report支持
FT-V3.X (${项目版本号}>=V3.13.1ft-openapi支持
FT-V3.X (${项目版本号}>=V3.13.1ft-app-web支持
FT-V3.X (${项目版本号}>=V3.13.1ft-entry-web支持
FT-V3.X (${项目版本号}>=V3.13.1ft-geotab-web支持
FT-V3.X (${项目版本号}>=V3.13.1ft-wialon-web支持
FT-V3.X (${项目版本号}>=V3.13.1runtime-starry-ft-pages支持
人因爱瑞特airuite-report-service支持对接完成,暂未发布版本
airuite-manager-service支持
仿真ai-sbs支持
ai-sda支持
hf-model-validation-service支持
ksks-report支持对接完成,暂未发布版本
ks-manager支持
hf (${项目版本号}>=V2.2.0)ai-hws支持
hf-xxl-job支持
hf-openapi-service支持
hf-driver-portrait支持
runtime-starry-human-factors-pages支持
human-backstage-web支持
ai-hbs支持
出租Alpha-V3.X (${项目版本号}>=V3.6.0)alpha3-mobile-web支持
runtime-alpha3-pages支持
alpha3-report支持
alpha3-opeartion支持
alpha3-manager支持
alpha3-call支持
alpha3-api支持
alpha3-809支持
公交BUS-V3.1 (${项目版本号}>=V3.18.0)所有组件支持

5.1.2、中间件支持情况

5.2、常见FAQ

5.2.1、主机免密配置保存失败

先确认主机秘钥对是否存在,如果不存在,则需要生成对应的密钥对,用于免密控制

主机免密配置保存失败图

不存在则执行以下命令,连续确认,进行密钥对生成(若存在则会覆盖,导致原有密钥对及登录信息失效)

ssh-keygen -t rsa

5.2.2、中间件环境安装失败

5.2.2.1、安装nginx、redis失败

若中间件环境机器存在已安装/未卸载干净的nginx或redis,会导致cicd安装nginx 、redis失败

1.存在已安装/未卸载干净nginx的情况,

(1)停止nginx服务

systemctl stop nginx

(2)卸载nginx

yum remove nginx

2.存在已安装/未卸载干净redis的情况

(1)停止nginx服务

systemctl stop redis

(2)卸载nginx

yum remove redis

5.2.3、流水线-构建阶段失败

5.2.3.1、如何查看Jenkin的构建日志

从构建阶段中的任务日志 按钮跳转即可查看组件的构建日志

如何查看Jenkin的构建日志图

5.2.3.2、git拉取代码失败

在Jenins中发现类似如下git拉取代码失败的错误,一般是网络原因,待网络稳定后重新运行流水线。

git拉取代码失败图

git拉取代码失败图

5.2.3.3、组件构建分支不存在

在Jenins日志中发现如下失败的错误,一般是构建组件分支不存在,需要检查此次构建的分支信息是否正确。

组件构建分支不存在图

5.2.3.4、Java类工程maven编译失败, 而本地能正确编译

1.请先确保commitId是否为预期;

确保commitId是否为预期图

2.commitId正确的情况下再检查是否有依赖项的更新:目前创建流水线后, Java流水线模板的maven默认命令为"mvn clean package -U -DskipTests=true", 会强制更新SNAPSHOT的依赖项(若是此种情况, 清空本地.m2中对应GAV坐标的缓存, 本地重新编译也会报错)。

确保commitId是否为预期图

确保commitId是否为预期图

确保commitId是否为预期图

5.2.3.5、缺少install文件夹

构建阶段报错信息如下:

缺少install文件夹图

原因: 目前构建流水线时都是打新老cicd兼容包,这里打包的时候发现没有老CICD的install文件夹,就打包失败了。 解决方案: 找一个正常的服务,把install文件夹拷过来改一改就行了,运行流水线打包时只要有这个文件夹就行了,但如果需要兼容老cicd部署这个服务,就需要保证脚本内容是对的。

5.2.3.6、打的包与预期不一致

构建阶段报错信息如下:

打的包与预期不一致图

原因:

组件的assemble.sh配置文件中的组件名称/版本号与在CICD管理系统中录入的信息不一致

解决方案:

接入CICD管理系统的组件名称、版本号配置信息支持传参的方式,参数值来自系统录入的组件名称、版本号。可以参考如下进行修改,后续就不用每个版本维护这个文件的版本号了。

打的包与预期不一致图

5.2.3.7、前端组件-依赖版本的问题

构建阶段报错信息如下:

前端组件-依赖版本图

原因:

前端的依赖版本有误。

解决方案:

参考如下进行修改:

前端组件-依赖版本图

5.2.4、流水线-部署阶段失败

5.2.4.1、如何查看部署日志

通过查看部署的日志, 可定位80%的部署问题, 同时组件自身的install.sh等脚本输出内容也会在日志中呈现. 1.中间件可以通过【查看日志】按钮(目前仅能查看最近一次操作的日志)

查看部署日志图

2.业务组件, 可通过任务的部署日志 or 组件部署历史的部署日志 两个入口查看、

查看部署日志图

查看部署日志图

5.2.4.2、"Failed to obtain JDBC..."——缺少nacos用户

若部署时报错信息如下:

缺少nacos用户图

原因:

重装mariadb后没有重装nacos,缺少nacos用户

解决方案:

重装nacos

5.2.4.3、"Failed to establish a new connection... "——nacos/mariadb无法连接

若部署失败时报错信息如下:

nacos/mariadb无法连接图

原因:

安装中间件后才开启防火墙

解决方案:

1.安装nacos时没开启防火墙,就不会开放21980的端口,开启防火墙重装nacos

2.手动开启防火墙端口

firewall-cmd --add-port=21980/tcp --permanent #开放端口21980 firewall-cmd --reload #重载入添加的端口 firewall-cmd --query-port=21980/tcp #查询指定端口是否开启成功

*说明:

1.目前中间件安装时都只开通了中间件的默认监听端口,若修改了中间件监听端口,则需要手动开启对应端口白名单。

5.2.4.4、"version() not matched..."目标服务器上的组件版本信息不一致

服务器上的组件版本信息不一致图

原因:

一般是通过CICD系统安装后,人为在目标服务器上卸载/删除了组件。

解决方案:

登录CICD管理系统,进入环境管理-集群管理模块,找到对应环境的对应组件后(如截图,状态为异常的组件一般都是由于目标服务器上的组件信息与CICD系统记录的状态不一致导致的),选择对应组件,点击“卸载集群”按钮卸载该组件后再重新运行流水线进行构建部署。

服务器上的组件版本信息不一致图

5.2.4.5、长时间未完成部署

查看流水线运行详情时,发现部署阶段长时间未完成(单个组件正常部署时间为3-5分钟),一般是由于网络不稳定导致部署状态未及时更新,目前请先联系CICD团队进行人工处理。

长时间未完成部署图

5.2.4.6、“Failed to download file from MinIO...”——包文件下载失败

若部署失败时报错信息如下:

包文件下载失败图

原因:

下载组件包失败。

解决方案:

1.重新运行流水线排除网络问题。

2.排除网络问题后可联系CICD团队进行人工处理。

5.2.4.7、“Missing SQL file for...”——升级sql文件命名有误

升级sql文件命名有误图

5.2.4.8、“{组件名称} has been installed...”——目标机上已存在该组件/组件目录

原因: x

因为通过CICD系统运行流水线进行组件的全新安装时,部署脚本install.sh检测到${组件名称}的进程或目录存在就会安装失败。因此,若出现如截图的报错信息,一般是由于目标机上存在未通过CICD系统进行卸载的组件或人为卸载时组件目录未删除干净。

解决方案: 方案一:检查目标机的${组件名称}进程在不在,若存在需要先卸载该组件,然后删除组件目录,参考步骤如下:

1.停守护(若有);

2.卸载组件(确保组件进程、组件目录等卸载干净);

3.重新运行流水线进行构建部署。

方案二:若目标机的${组件名称}进程不存在,则检查目标机上的${组件名称}的目录是否存在,若存在可以直接删除目录后重新运行流水线进行构建部署。

5.2.5、流水线-组件构建/部署错误信息

5.2.5.1、Jenkins任务错误反显

如下图显示,当光标移动到错误信息上后,可以查看错误信息

x

根据错误信息,可以初步按如下方案进行处理:

x

大纲目录