CI/CD流水线
**本文引用的文件** - [[bi-analysis/Dockerfile]](../file/bi-analysis/dockerfile) - [[bi-analysis/Makefile]](../file/bi-analysis/makefile) - [[bi-basic/Dockerfile]](../file/bi-basic/dockerfile) - [[bi-basic/Makefile]](../file/bi-basic/makefile) - [[scripts/deploy.sh]](../file/scripts/deploy.sh) - [[bi-chat/Dockerfile]](../file/bi-chat/dockerfile) - [[bi-chat/docker-compose.yml]](../file/bi-chat/docker-compose.yml) - [[bi-chat-asktable/Dockerfile]](../file/bi-chat-asktable/dockerfile) - [[bi-api-jushuitan/Dockerfile]](../file/bi-api-jushuitan/dockerfile) - [[bi-api-leke/Dockerfile]](../file/bi-api-leke/dockerfile) - [[bi-cron/Dockerfile]](../file/bi-cron/dockerfile) - [[bi-notify/Dockerfile]](../file/bi-notify/dockerfile) - [[bi-plan-taoxi/Dockerfile]](../file/bi-plan-taoxi/dockerfile) - [[bi-sys/Dockerfile]](../file/bi-sys/dockerfile) - [[bi-template/Dockerfile]](../file/bi-template/dockerfile) - [[bi-tenant/Dockerfile]](../file/bi-tenant/dockerfile) - [[mcp-server-starrocks/Dockerfile]](../file/mcp-server-starrocks/dockerfile) - [[ui-web/Dockerfile]](../file/ui-web/dockerfile) - [[ui-web-admin/Dockerfile]](../file/ui-web-admin/dockerfile) - [[ui-crx/Dockerfile]](../file/ui-crx/dockerfile) - [[bi-infra/README.md]](../file/bi-intra/readme.md) - [[bi-infra/apisix/apisix-manager.sh]](../file/bi-intra/apisix/apisix-manager.sh) - [[bi-infra/apisix/create-op-bi-sys.sh]](../file/bi-intra/apisix/create-op-bi-sys.sh) - [[bi-infra/charts/grafana/deploy.sh]](../file/bi-infra/charts/grafana/deploy.sh) - [[bi-infra/charts/grafana/deploy-dashboards.sh]](../file/bi-infra/charts/grafana/deploy-dashboards.sh) - [[bi-basic/internal/tests/read_kafka_test.sh]](../file/bi-basic/internal/tests/read-kafka-test.sh) - [[bi-basic/internal/tests/send_kafka_test.sh]](../file/bi-basic/internal/tests/send-kafka-test.sh) - [[bi-notify/scripts/create_kafka_topics.sh]](../file/bi-notify/scripts/create-kafka-topics.sh) - [[bi-notify/scripts/kafka-port-forward.sh]](../file/bi-notify/scripts/kafka-port-forward.sh) - [[bi-infra/scripts/publish-services.sh]](../file/bi-infra/scripts/publish-services.sh) - [[bi-infra/apisix/services.yaml]](../file/bi-intra/apisix/services.yaml) - [[bi-infra/apisix/apisix-gateway-lb-test.yaml]](../file/bi-intra/apisix/apisix-gateway-lb-test.yaml) - [[bi-infra/apisix/apisix-gateway-lb-test-svc.yaml]](../file/bi-intra/apisix/apisix-gateway-lb-test-svc.yaml) - [[bi-infra/apisix/apisix-gateway-lb-test-endpoints.yaml]](../file/bi-intra/apisix/apisix-gateway-lb-test-endpoints.yaml) - [[bi-infra/apisix/apisix-prometheus-global-rule.json]](../file/bi-intra/apisix/apisix-prometheus-global-rule.json) - [[bi-infra/charts/nacos/README.md]](../file/bi-infra/charts/nacos/readme.md) - [[bi-infra/charts/kafka/README.md]](../file/bi-infra/charts/kafka/readme.md) - [[bi-infra/charts/grafana/README.md]](../file/bi-infra/charts/grafana/readme.md) - [[bi-infra/charts/apisix/README.md]](../file/bi-infra/charts/apisix/readme.md)
目录
引言
本文件面向BI分析平台的CI/CD流水线,系统化梳理自动化构建、测试与部署流程,覆盖代码检查、单元测试、集成测试、性能测试、Docker镜像构建与推送、Kubernetes自动化部署脚本、GitOps与声明式基础设施、代码质量门禁、安全扫描与合规检查、回滚机制与紧急修复流程,以及多环境(开发、测试、预生产、生产)管理策略与最佳实践。
项目结构
仓库采用多模块Go微服务与前端工程并存的组织方式,各子项目均具备独立的Dockerfile与Makefile,便于标准化构建与发布;同时提供脚本化的本地部署与基础设施管理工具,支撑从开发到生产的全链路交付。
图示来源
章节来源
核心组件
- 多项目Dockerfile:统一基于私有镜像仓库的基础镜像,分阶段构建,避免凭证泄露至最终镜像,支持多项目复用。
- Makefile构建规范:集中管理协议生成、Wire依赖注入、OpenAPI文档生成与同步、版本标记等。
- 自动化部署脚本:封装拉取代码、前端/后端构建、Docker镜像构建与Compose编排启动的完整流程。
- 基础设施脚本:提供网关、监控、注册中心、消息队列等组件的部署与管理脚本。
- 测试脚本:涵盖Kafka读写测试与端口转发,支撑集成测试与联调验证。
章节来源
- [bi-analysis/Dockerfile]
- [bi-analysis/Makefile]
- [bi-basic/Dockerfile]
- [bi-basic/Makefile]
- [scripts/deploy.sh]
架构总览
下图展示从代码提交到Kubernetes部署的关键路径,包括代码检查、构建、测试、镜像构建与推送、以及Kubernetes部署与GitOps声明式管理。
图示来源
详细组件分析
代码检查与质量门禁
- 代码风格与静态检查:建议在CI中集成golangci-lint、misspell、typos等工具,确保提交前通过基础质量门禁。
- 单元测试覆盖率:要求每个包至少达到阈值(如80%),失败则阻断合并。
- 协议与OpenAPI一致性:通过Makefile中的协议生成与OpenAPI导出流程,确保接口契约稳定。
- 合规与依赖审计:对第三方依赖进行许可证扫描与漏洞扫描,结合SBOM输出。
章节来源
单元测试与集成测试
- 单元测试:利用Go标准库测试框架,按模块编写单元测试,确保核心逻辑正确性。
- 集成测试:通过Kafka读写脚本与端口转发脚本,验证消息收发与服务间通信。
- E2E测试:在bi-basic的e2e目录中提供端到端测试样例,建议纳入CI流水线。
图示来源
- [bi-basic/internal/tests/read_kafka_test.sh]
- [bi-basic/internal/tests/send_kafka_test.sh]
- [bi-notify/scripts/kafka-port-forward.sh]
章节来源
- [bi-basic/internal/tests/read_kafka_test.sh]
- [bi-basic/internal/tests/send_kafka_test.sh]
- [bi-notify/scripts/kafka-port-forward.sh]
性能测试与基准
- 建议在CI中引入压力测试与基准测试(如go test -bench),针对关键查询与数据处理路径设置基线。
- 将性能指标(P95/P99延迟、吞吐量、资源占用)纳入质量门禁,异常即阻断。
章节来源
Docker镜像自动构建与推送
- 构建阶段:统一使用多阶段Dockerfile,下载依赖、编译二进制,最终仅拷贝必要文件到精简基础镜像。
- 凭证管理:在构建阶段配置机密信息,避免泄露至最终镜像。
- 版本标签:基于Git Tag或Commit ID生成镜像标签,确保可追溯。
- 推送策略:在CI中完成镜像构建与推送,结合镜像仓库的扫描与签名策略。
图示来源
章节来源
Kubernetes自动化部署脚本
- 本地一键部署:提供部署脚本,自动拉取代码、构建前端/后端、构建Docker镜像并使用Compose启动。
- 生产部署:建议以Helm/Argo CD/Kustomize等GitOps工具管理Kubernetes资源,确保声明式与可追溯。
图示来源
章节来源
GitOps工作流与声明式基础设施
- 声明式配置:通过Helm Charts、Kustomize或Argo CD管理Kubernetes资源,确保环境一致性。
- 基础设施即代码:网关、监控、注册中心、消息队列等通过脚本与配置文件管理,纳入版本控制。
- 变更审批:通过Pull Request与自动化检查,确保变更受控与可审计。
章节来源
- [bi-infra/README.md]
- [bi-infra/apisix/apisix-manager.sh]
- [bi-infra/apisix/create-op-bi-sys.sh]
- [bi-infra/charts/grafana/deploy.sh]
- [bi-infra/charts/grafana/deploy-dashboards.sh]
多环境部署策略
- 开发环境:快速迭代,允许频繁变更与实验性功能。
- 测试环境:与生产网络隔离,执行完整的回归与集成测试。
- 预生产环境:尽可能接近生产配置,进行容量与性能验证。
- 生产环境:严格准入控制,启用蓝绿/金丝雀发布,配合健康检查与自动回滚。
章节来源
- [bi-infra/apisix/services.yaml]
- [bi-infra/apisix/apisix-gateway-lb-test.yaml]
- [bi-infra/apisix/apisix-gateway-lb-test-svc.yaml]
- [bi-infra/apisix/apisix-gateway-lb-test-endpoints.yaml]
- [bi-infra/apisix/apisix-prometheus-global-rule.json]
回滚机制与紧急修复
- 快速回滚:记录镜像Tag与Kubernetes配置版本,支持一键回滚至上一个稳定版本。
- 紧急修复:通过热修复分支与小步快跑策略,最小化影响范围。
- 降级预案:在网关层对非关键服务进行熔断与降级,保障核心链路可用。
章节来源
依赖关系分析
图示来源
- [bi-analysis/Makefile]
- [bi-basic/Makefile]
- [bi-analysis/Dockerfile]
- [bi-basic/Dockerfile]
- [scripts/deploy.sh]
- [bi-infra/apisix/services.yaml]
- [bi-infra/charts/grafana/deploy.sh]
- [bi-infra/charts/nacos/README.md]
- [bi-infra/charts/kafka/README.md]
- [bi-infra/charts/grafana/README.md]
- [bi-infra/charts/apisix/README.md]
章节来源
- [bi-analysis/Makefile]
- [bi-basic/Makefile]
- [bi-analysis/Dockerfile]
- [bi-basic/Dockerfile]
- [scripts/deploy.sh]
性能考量
- 构建优化:多阶段构建减少镜像体积,缓存Go模块与依赖以缩短构建时间。
- 运行时优化:启用GZIP压缩、连接池复用、异步处理与限流熔断,降低延迟与资源消耗。
- 监控与告警:结合Prometheus/Grafana与APISIX指标,建立端到端可观测性。
章节来源
故障排除指南
- 构建失败排查:检查Dockerfile中的凭证配置、Go模块代理与网络访问权限。
- 镜像推送问题:确认镜像仓库凭据与网络连通性,检查镜像标签格式。
- 部署异常:核对Kubernetes资源配置、服务发现与端口映射,查看Pod事件与日志。
- 网关与监控:使用APISIX管理脚本与Grafana部署脚本验证网关路由与监控面板。
- Kafka联调:通过Kafka读写脚本与端口转发脚本定位消息收发问题。
章节来源
- [bi-analysis/Dockerfile]
- [bi-basic/Dockerfile]
- [bi-infra/apisix/apisix-manager.sh]
- [bi-infra/charts/grafana/deploy.sh]
- [bi-notify/scripts/create_kafka_topics.sh]
- [bi-notify/scripts/kafka-port-forward.sh]
结论
本CI/CD方案以标准化的Dockerfile与Makefile为基础,结合脚本化的部署流程与GitOps声明式管理,形成从代码到生产的闭环。建议在现有基础上补充自动化测试、质量门禁与安全扫描,并完善多环境治理与回滚机制,持续提升交付效率与稳定性。
附录
- 建议的CI流水线步骤清单
- 代码检查(golangci-lint、misspell、typos)
- 单元测试(含覆盖率)
- 集成测试(Kafka读写、端口转发)
- 性能测试(基准与压力)
- Docker镜像构建与推送
- Kubernetes部署(Helm/Argo CD)
- 声明式基础设施校验
- 安全扫描与合规检查
- 回滚与紧急修复演练