前言:在前面的内容中,我们已经深入探讨了流水线的设计思路以及“一次构建多次部署”的核心概念。现在,让我们将这些理论知识付诸实践,在 EasyOps 平台上开始编排流水线。
本期优维EasyOps产品使用最佳实践,我们将为您介绍:
- EasyOps持续集成的核心功能
- 优维在不同阶段的流水线编排
优维EasyOps平台中流水线这个功能是由持续集成这个小产品承载,持续集成模块为用户提供了以下核心功能:
- 流水线编排: 用户可以使用 EasyOps 平台的流水线设计器,轻松地创建、配置和排列多个构建、测试和部署步骤,以构建完整的持续集成流水线。
- 多种任务支持: 持续集成模块支持多种任务类型,如代码构建、单元测试、集成测试、部署到不同环境等。用户可以根据项目需求,选择合适的任务类型。
- 插件集成:EasyOps 平台提供了丰富的插件,用于执行各种任务。用户可以根据需要选择适当的插件,以满足不同的集成需求。
- 参数传递和配置: 用户可以在流水线的不同步骤之间传递参数,从而实现数据共享和流程控制。任务的配置也可以根据项目需要进行灵活调整。
- 触发和自动化: 用户可以设置流水线的触发条件,如代码提交、定时触发等。这样,当触发条件满足时,系统会自动触发流水线的执行。
- 日志和监控: 在流水线执行过程中,EasyOps 平台会生成详细的日志和报告,供用户查看任务执行情况和结果。用户可以通过监控和日志查看来排查问题。
优维内部按不同的场景有不同的流水线:
- 研发阶段:开发流水线、打包流水线,
- 开发流水线:开发流水使用容器保持敏捷开发
1)提交即构建,push事件通过webhook触发流水线执行 ,这里希望当研发提交代码后,就立即升级到dev环境中进行自测,所以监听的push事件。点击流水线设置tab中的事件触发器,勾选push事件即可。
2) 单元测试
3)这里是直接使用了多阶段构建,编译代码构建镜像一步完成,通过${{app_name}}、${{package_name}}获取流水线参数,${{image_tag}}获取上一步生成的ID
4)API测试
5)部署到dev环境进行自测,这里使用的自定义脚本通过helm发布,部署到dev环境后,研发自测;部署失败立即通知研发检查。
打包流水线,也可以称为MR流水线,研发自测通过后提MR,合并后由tag触发。
当正式版本生成后,这个版本是贯穿后续的整个CI/CD的。
1)通过tag触发流水线
2)编译代码
3)上传制品到制品仓库,按照实际约定好的路径获取制品包并上传到制品仓库
测试阶段:测试流水线
1)研发通过部署流水线部署提测组件api_gateway:1.82.1到测试环境,并提测给QA同事。
2)QA测试,自动/人工测试
3)升级制品,合入发行版
生产阶段:使用双态部署发布单批量部署
在优维内部,我们深刻理解软件开发的不同阶段所需的灵活性和稳定性。因此,我们在不同的开发阶段采用了定制化的流水线,以满足不同阶段的需求。
在灵活性的同时,我们也坚守着一个核心原则:在研发完成后的正式出包阶段,我们始终采用相同的版本号,在测试和生产环境中进行部署。这就是我们坚守的“一次构建,多次部署”的原则。它确保了软件的一致性。
通过在测试和生产环境中使用相同的版本号,我们可以消除由于版本差异而引起的问题,确保测试的可靠性,并降低在生产环境中出现未知问题的风险。