DevOps的技术和工具有哪些?
工具及流程概览
我们的 DevOps 工具链有 Jira, Gitlab, 时速云 DevOps 平台,Sonarqube, TestLink, Harbor
- Jira: 项目管理;
- Gitlab: 代码托管、在线 Review;
- 时速云 DevOps 平台:基于 Kubernetes 的代码拉取,编译,代码扫描,单元测试,打包,构建镜像、持续部署,审批,邮件;
- Sonarqube:代码静态扫描;
- TestLink: 测试管理;
- Harbor: 镜像托管,镜像安全扫描;
流程如下:
实践说明
1 需求/缺陷管理
需求和缺陷管理我们使用功能强大的 Jira 工具,以两周一迭代方式进行敏捷式开发。
2 代码 Review/Merge
聊天工具集成 gitlab,PR 提交后 Reviewer 及时看到提交信息,进行 Review 和Merge。
3 Gitlab触发自动化构建
时速云 DevOps 平台自动生成 Gitlab 项目的 webhook, 当 gitlab 有事件发生,把事件信息发送到时速云 DevOps 平台,时速云 DevOps 平台根据条件触发自动执行构建。
4 时速云 DevOps 平台
4.1 流程简介
时速云 DevOps 平台基于 Kubernetes 和 Docker 运行具体任务,由 Kubernetes 调度、执行完后销毁。每一个任务模板最终生成 Kubernetes 的 Job,Job 会生成 Pod 运行任务, 并管理生命周期。
每个任务模板镜像都有为自身任务的最小化工具。比如 maven 任务镜像只有 maven 客户端命令工具,容器被 job 生成时,会通过进入点运行 maven 命令,运行结束后将结束容器。代码扫描任务会有 sonar-scanner 客户端工具,Docker 构建任务可以运行Docker build 命令构建镜像和 Push 镜像到 Harbor。
镜像推送到 Harbor 后会使用平台持续部署任务模板更新服务。
持续部署成功后服务会被升级到最新版本。
4.2 任务模板
时速云 DevOps 平台的任务模板是为执行任务的镜像和数据集合。
sonar 扫描任务为例,sonar 扫描任务执行就是容器化运行 sonar-scanner。
下图为 sonar 扫描任务的 Dockerfile, 就是把代码和 sonar 扫描配置文件拷贝到指定目录,运行 sonar-scanner 命令。
执行结果以 Rest API 方式发送到平台,平台记录执行结果,并根据设置执行下一步任务或失败退出。
5 集成测试
测试有测试用例,测试用例有测试结果,如果测试结果与期待结果不符,同步到 Jira, 再执行编码的步骤,形成一个闭环。
测试用例和测试版本的测试结果使用TestLink工具管理。
6 Harbor 同步
测试人员进行测试通过以后,使用 Harbor 镜像同步功能,同步到运维环境 Harbor。
7 Harbor 镜像更新后通过触发设置触发执行部署任务
harbor的common/config/registry/config.yml设置notification属性为时速云 DevOps 平台 webhook 地址和认证方式,时速云 DevOps 平台可以根据 payload 信息触发执行 CI/CD。
8 部署运维服务
时速云 DevOps 平台被触发执行后,与上面部署一样会根据新的镜像更新部署新的服务。
9 自动标记 Jira
集成测试结束以后,通过 Jira API , 把 gitlab 中的大括号里相应的 Jira issue 为关闭状态,添加部署版本说明。
10 保障代码和最终交付产物的源头一致性
如下图,在代码构建时把代码的版本信息一同写入镜像可以做到最终交付产物和代码源头的一致性比较。
git rev-parse --shortHEAD > .gitversion
git log--pretty=oneline HEAD...$PREVIOUS_COMMIT_ID > .gitdiff
作者:时速云
链接:https://www.zhihu.com/question/462977053/answer/1922306293