GCP生产项目使用Cloud Source Repository实现ETL流程CICD编排咨询
基于GCP技术栈的Composer多环境CICD优化实现方案
你可以直接基于现有技术栈调整实现全自动化的环境同步,不需要维护两套独立代码库,核心方案如下:
1. 调整代码仓库分支管理策略
- 复用当前的CSR仓库,拆分两个常驻受保护分支:
dev分支对应开发环境,prod分支对应生产环境 - 日常开发所有代码提交到
dev分支,功能验证完成后走合并流程到prod分支,无需手动同步到单独的生产代码库
2. 配置分环境的Cloud Build触发器
- 配置dev环境触发器:触发条件绑定
dev分支的提交事件,执行cloudbuild-dev.yaml逻辑,自动完成DAG语法校验、单元测试后,上传代码到dev环境Composer的DAG存储桶 - 配置prod环境触发器:触发条件绑定
prod分支的合并事件,执行cloudbuild-prod.yaml逻辑,可选择加手动审批环节后,上传代码到prod环境Composer的DAG存储桶
示例dev环境构建配置片段如下:
steps: # 安装依赖并执行DAG校验、单元测试 - name: 'python:3.10' entrypoint: 'pip' args: ['install', 'apache-airflow==<你的Composer对应Airflow版本>', 'pytest'] - name: 'python:3.10' entrypoint: 'python' args: ['-m', 'pytest', './tests/'] # 同步DAG文件到dev环境存储桶 - name: 'gcr.io/cloud-builders/gsutil' args: ['cp', './*.py', 'gs://<dev环境Composer DAG存储桶名称>/dags/']
3. 配置分支合并校验规则
可在CSR中开启prod分支的保护规则,合并前强制满足以下条件:
- 至少1名项目成员审核通过合并请求
dev分支对应的全量测试、校验流程100%通过- 静态代码扫描无高危风险问题
所有条件满足后合并代码自动触发生产部署,完全替代手动同步操作。
4. 可选高阶优化
如果对生产稳定性要求极高,可在prod环境的构建流程中加入灰度发布逻辑:先上传DAG到prod环境的子目录,仅做语法校验不调度运行,人工确认无误后再移动到正式DAG目录触发调度。
内容的提问来源于stack exchange,提问作者Kuwali
相关产品推荐
相关产品推荐

