Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本指南介绍如何创建 CI/CD 流水线,以测试、同步和部署 GitHub 代码库中的 DAG 到 Cloud Composer 环境。
如果您只想同步其他服务中的数据,请参阅从其他服务转移数据。
CI/CD 流水线概览

用于测试、同步和部署 DAG 的 CI/CD 流水线包含以下步骤:
对 DAG 进行更改,然后将该更改推送到代码库中的开发分支。
您打开针对代码库主分支的拉取请求。
Cloud Build 运行单元测试以检查 DAG 是否有效。
您的拉取请求已获批准并会合并到代码库的主分支。
Cloud Build 会将开发 Cloud Composer 环境与这些新更改同步。
验证 DAG 在开发环境中是否按预期运行。
如果您的 DAG 按预期运行,请将 DAG 上传到生产 Cloud Composer 环境。
目标
- 使用 Cloud Build 运行自动预提交检查。此检查会针对 DAG 运行单元测试。
- 将开发 Cloud Composer 环境中的 DAG 与 GitHub 代码库中的 DAG 同步。
准备工作
本指南假定您使用的是两个相同的 Cloud Composer 环境:开发环境和生产环境。
在本指南中,您仅为开发环境配置 CI/CD 流水线。确保您使用的环境不是生产环境。
本指南假定您已将 DAG 及其测试存储在 GitHub 代码库中。
示例 CI/CD 流水线展示了示例代码库的内容。DAG 和测试存储在
dags/
目录中,而需求文件、限制文件和 Cloud Build 配置文件存储在顶层。DAG 同步实用程序及其要求位于utils
目录中。
创建提交前检查作业和单元测试
第一个 Cloud Build 作业会运行提交前检查,该检查会针对您的 DAG 执行单元测试。
添加单元测试
如果您尚未为 DAG 编写单元测试,请立即开始。将这些测试与 DAG 一起保存在您的代码库中,每个测试都带有 _test
后缀。例如,example_dag.py
中 DAG 的测试文件为 example_dag_test.py
。这些测试会在您的代码库中作为提交前检查运行。
为提交前检查创建 Cloud Build YAML 配置
在您的代码库中,创建一个名为 test-dags.cloudbuild.yaml
的 YAML 文件,用于为预提交检查配置 Cloud Build 作业。其中包含三个步骤:
- 安装 DAG 所需的依赖项。
- 安装单元测试所需的依赖项。
- 执行 DAG 测试。
为提交前检查创建 Cloud Build 触发器
按照从 GitHub 构建代码库指南的操作,使用以下配置创建基于 GitHub 应用的触发器:
名称:
test-dags
事件:拉取请求
来源 - 代码库:选择您的代码库
来源 - 基本分支:
^main$
(如果需要,请将main
更改为代码库的基本分支的名称)来源 - 评论控制:非必要操作
构建配置 - Cloud Build 配置文件:
/test-dags.cloudbuild.yaml
(构建文件的路径)
创建 DAG 同步作业并添加 DAG 实用程序脚本
接下来,配置运行 DAG 实用程序脚本的 Cloud Build 作业。此作业中的实用程序脚本将合并到您代码库中主分支的 DAG 与 Cloud Composer 环境同步。
添加 DAG 实用程序脚本
将 DAG 实用程序脚本添加到您的代码库。此实用程序脚本将代码库的 dags/
目录中的所有 DAG 文件都复制到临时目录中,而忽略所有非 DAG Python 文件。该脚本随后会使用 Cloud Storage 客户端库将临时目录中的所有文件都上传到 Cloud Composer 环境的存储桶中的 dags/
目录。
创建用于同步 DAG 的 Cloud Build YAML 配置
在您的代码库中,创建一个名为 add-dags-to-composer.cloudbuild.yaml
的 YAML 文件,用于配置 Cloud Build 作业以同步 DAG。其中包含两个步骤:
安装 DAG 实用程序脚本所需的依赖项。
运行实用程序脚本,以将代码库中的 DAG 与 Cloud Composer 环境同步。
创建 Cloud Build 触发器
按照从 GitHub 构建代码库指南的操作,使用以下配置创建基于 GitHub 应用的触发器:
名称:
add-dags-to-composer
事件:推送到分支
来源 - 代码库:选择您的代码库
来源 - 基本分支:
^main$
(如果需要,请将main
更改为代码库的基本分支的名称)来源 - 包含的文件过滤条件 (glob):
dags/**
构建配置 - Cloud Build 配置文件:
/add-dags-to-composer.cloudbuild.yaml
(构建文件的路径)
在“高级配置”中,添加两个替代变量:
_DAGS_DIRECTORY
- DAG 在代码库中所在的目录。 如果您使用的是本指南中的示例代码库,则为dags/
。_DAGS_BUCKET
- 在开发 Cloud Composer 环境中包含dags/
目录的 Cloud Storage 存储桶。省略gs://
前缀。例如:us-central1-example-env-1234ab56-bucket
。
测试 CI/CD 流水线
在本部分中,您将按照 DAG 开发流程操作以利用新创建的 Cloud Build 触发器。
运行预提交作业
向主分支创建拉取请求以测试 build。在页面上找到预提交检查。点击详情,然后选择在 Google Cloud Build 中查看更多详情,即可在Google Cloud 控制台中查看构建日志。

如果预提交检查失败,请参阅解决构建失败的问题。
验证 DAG 在开发环境中是否正常运行
拉取请求获得批准后,将其合并到主分支。使用Google Cloud 控制台查看构建结果。如果您有许多 Cloud Build 触发器,可以按触发器名称 add-dags-to-composer
过滤构建。
Cloud Build 同步作业成功完成后,同步的 DAG 会显示在开发 Cloud Composer 环境中。您可以在其中验证 DAG 是否按预期运行。
将 DAG 添加到生产环境中
在 DAG 按预期运行后,手动将其添加到生产环境。为此,请将 DAG 文件上传到生产 Cloud Composer 环境的存储桶中的 dags/
目录。
如果您的 DAG 同步作业失败或 DAG 在开发 Cloud Composer 环境中未按预期运行,请参阅解决构建失败的问题。
解决构建失败的问题
本部分介绍了如何解决常见的构建失败场景。
如果预提交检查失败,该怎么办?
在拉取请求中,点击详情,然后选择在 Google Cloud Build 中查看更多详情,即可在Google Cloud 控制台中查看构建日志。您可以使用这些日志来帮助您调试 DAG 的问题。解决问题后,请提交修复并推送到您的分支。预提交检查会再次运行,您可以继续使用日志作为调试工具进行迭代。
如果我的 DAG 同步作业失败,该怎么办?
使用 Google Cloud 控制台查看构建结果。如果您有许多 Cloud Build 触发器,可以按触发器名称 add-dags-to-composer
过滤构建。检查 build 作业的日志并解决错误。如果您在解决错误时需要其他帮助,请利用支持渠道。
如果我的 DAG 在 Cloud Composer 环境中无法正常运行,该怎么办?
如果您的 DAG 在开发 Cloud Composer 环境中未按预期运行,请不要手动将 DAG 提升到 Cloud Composer 生产环境。请改为采用以下方法之一:
- 使用破坏 DAG 的更改还原拉取请求,以将其恢复到更改之前的状态(这也将还原该拉取请求中的所有其他文件)。
- 创建新的拉取请求,以手动还原对损坏的 DAG 进行的更改。
- 创建新的拉取请求,以修复 DAG 中的错误。
完成以下任何步骤后将触发新的预提交检查,并在合并后执行 DAG 同步作业。