为了能让团队更好的进行开发调试包括对整个DevOps工具链进行搭建以及测试,我们为每个团队提供了以下配套环境
基础设施环境说明:
- 2台 Linux 虚拟机(团队自行分配2台VM的用途)
- VM#1: VM-Tools(用于搭建工具链) (CPU: 2 Core MEM: 8G)
- VM#2: VM-Dev(用于搭建测试环境) (CPU: 2 Core MEM: 4G)
- 1个 容器镜像仓库 (使用微软Azure云的Azure Container Registry)
- 1个 k8s 集群(使用微软Azure云的Azure Kubernetes Services)
- k8s 总会通过 命名空间(NS)划分成 Test/Prod 两个环境
应用环境说明:
- Jenkins服务器:Jenkins服务器作为流水线的调度引擎,为以下环境提供自动化操作能力
- 开发调测环境(DEV):使用docker单机环境,代码提交后,通过流水线自动完成部署
- 测试环境(TEST):使用k8s集群中的Namespace环境,DEV环境部署通过后,由测试团队批准对TEST环境的部署
- 生产环境(PROD):使用k8s集群中的Namespace环境,TEST环境部署通过后,由测试团队完成测试并提交测试报告,产品团队确认后,批准对PROD环境的部署
云智慧所使用的服务器基础环境已经搭建完毕,各团队需要按照以下操作手册完成流水线的搭建操作。相关环境信息通过讲师处获取,包括:
- vm1服务器的域名(IP)以及ssh用户名和密码
- Jenkins的登录地址,用户名和密码器:Jenkins运行在vm1上
- vm2服务器的域名(IP)以及ssh用户名和密码
- 这台机器是(DEV)环境的部署目标
- ACR容器镜像仓库的地址,用户名和密码
- 这些信息作为容器化镜像的存储服务
- k8s环境密钥
- teamXXX.kubeconfig 文件会由讲师直接发送
- 此文件需要放置在特定位置由kubectl工具使用,具体请参考k8s部分的部署文档
注意:每一个团队只有一套环境! 大家注意做好分工。
完成基础流水线搭建需要各个小组按照以下流程完成,以下操作有先后顺序要求,请按顺序操作:
- 示例代码导入: 按照此文档完成Gitee上面的代码库复制(Fork)。
- Jenkins环境变量配置:按照此文档完成Jenkins中各种环境变量和密钥的配置,这些环境变量和密钥每个小组均不同,相关的信息需要从讲师处获取。
- 完成流水线搭建并部署到Dev环境:完成流水线搭建,并使用流水线完成Dev环境的自动化部署。
请按照以下快速开发指南完成前后端代码的本地调试,并在前端Client应用的菜单中增加一个选项,通过流水线自动部署到DEV环境。
- 快速开发指南:搭建本地开发环境,完成Boathouse前后端代码的联调。
注意:团队必须首先完成此加分项才能开始进入3.2所列的其他加分项,否则视为无效得分。
- 使用流水线完成Test/Prod环境的自动化部署:按照此文档完成K8s环境中的 Test 和 Prod 两个环境的部署。
注意:请仔细阅读以下加分项的任务列表和验收标准,参考文档中的内容仅作为参考,不提供详细的操作指南。必要的时候请自行查阅网上的资料。
序号 | 任务名称 | 验收标准 |
---|---|---|
001 | 在流水线中增加基于SonarQube的静态代码检查 | 完成SonarQube服务器搭建并集成到现有流水线,可以通过SonarQube页面查看后端代码的检查结果。如果可以修复至少一个代码问题,额外加1分。 参考文档 Sonarqube配置指南 |
002 | 在流水线中添加单元测试环节 | 通过现有流水线执行代码中提供的单元测试用例,可以通过Jenkins内置的测试结果视图查看测试结果,如果可以增加一个以上的测试用例,额外加1分。 参考文档 快速创建Junit测试 Idea 快速创建Junit测试 |
003 | 在流水线中集成基于 Selenium 的自动化UI测试 | 在DEV环境部署Selenium Grid环境,并使用 Selenium Grid 运行文档中提供的测试代码,最终需要在流水线中执行这些测试并且通过 jenkins 的测试结果视图查看到结果。参考文档 Selenium自动化UI测试 Jenkins调度Selenium |
004 | 使用 PostMan 进行接口测试 | 安装并使用 PostMan 为Boathouse后台的2个接口添加接口测试用例,导出这些用例并使用 Newman 集成到流水线中。提示:Boathouse文档中并未提供Newman的操作方式,大家可以自行搜索相关使用说明。参考文档 Postman接口测试指南 |
005 | 使用 Neuxs 管理依赖和制品 | 搭建 Nexus 服务器并使用这台私有制品服务器管理本团队的外部依赖和待发布制品,待发布制品需要通过流水线实现自动上传和版本对其(制品版本与Jenkins构建ID的双向跟踪, 参考文档 Nexus搭建及使用指南 |
006 | 进行 Jmeter 自动执行接口/性能测试 | 搭建Jmeter环境,完成JMeter测试用例编写并在流水线中自动执行,可以正确查看JMeter测试报告。参考文档 JMeter测试用例编写手册 Jenkins集成Jmeter |
007 | 使用 Flyway 管理结构化数据库的持续交付 | 搭建Flyway环境,并通过Flyway集成流水线完成至少一个数据库字段的结构变更,变更内容需要自动发布到DEV环境。参考文档 使用 Flyway 进行数据库持续交付 |
008 | 完成Product Service 代码的开发调试 | 能调试起Product Service应用,并通过设置端点的方式,监控到变量的值。参考文档 开发调试指南 |
参考文档:Boathouse工具链指导文档列表 这里列出了所有相关的工具链指导文档,供参考。
本文档描述了IDCF DevOps 黑客马拉松的流水线搭建过程。