Google Cloud Build Operator¶
Google Cloud Build 是一项在 Google Cloud Platform 基础设施上执行构建的服务。Cloud Build 可以从 Google Cloud Storage、Cloud Source Repositories 导入源代码,根据您的规范执行构建,并生成诸如 Docker 容器或 Java 归档文件等制品。
先决条件任务¶
要使用这些 operator,您必须执行以下几项操作
使用 Cloud 控制台 选择或创建一个 Cloud Platform 项目。
为您的项目启用结算功能,详情请参阅Google Cloud 文档。
启用 API,详情请参阅Cloud 控制台文档。
通过 pip 安装 API 库。
pip install 'apache-airflow[google]'有关详细信息,请参阅安装。
CloudBuildCancelBuildOperator¶
取消正在进行的构建。
有关参数定义,请参阅 CloudBuildCancelBuildOperator
使用 operator¶
使用 CloudBuildCancelBuildOperator
operator 取消正在进行的构建。
tests/system/google/cloud/cloud_build/example_cloud_build.py
cancel_build = CloudBuildCancelBuildOperator(
task_id="cancel_build",
id_=cast("str", XComArg(create_build_without_wait, key="id")),
project_id=PROJECT_ID,
)
您可以使用 Jinja 模板 和 project_id
, id_
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildCreateBuildOperator¶
使用指定配置启动构建。由此 operator 生成的已创建构建的构建 ID 不是幂等的。
有关参数定义,请参阅 CloudBuildCreateBuildOperator
构建配置¶
为了触发构建,需要传递构建配置。
tests/system/google/cloud/cloud_build/example_cloud_build.py
CREATE_BUILD_FROM_STORAGE_BODY = {
"source": {"storage_source": GCP_SOURCE_ARCHIVE_URL},
"steps": [{"name": "ubuntu", "entrypoint": "bash", "args": ["-c", "echo Hello world && sleep 200"]}],
}
此外,构建可以引用存储在 Google Cloud Source Repositories 中的源代码。
tests/system/google/cloud/cloud_build/example_cloud_build.py
CREATE_BUILD_FROM_REPO_BODY: dict[str, Any] = {
"source": {"repo_source": {"repo_name": GCP_SOURCE_REPOSITORY_NAME, "branch_name": "master"}},
"steps": [{"name": "ubuntu", "entrypoint": "bash", "args": ["-c", "echo Hello world && sleep 200"]}],
}
阅读构建配置概览,以了解您可以在构建配置文件中包含的所有字段。
使用 operator¶
使用 CloudBuildCreateBuildOperator
operator 执行触发构建操作。
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_from_storage = CloudBuildCreateBuildOperator(
task_id="create_build_from_storage",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_STORAGE_BODY,
)
您可以使用可推迟模式(deferrable mode)以异步方式运行此 operator
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_from_storage = CloudBuildCreateBuildOperator(
task_id="create_build_from_storage",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_STORAGE_BODY,
deferrable=True,
)
您可以使用 Jinja 模板 和 project_id
, build
, gcp_conn_id
, impersonation_chain
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_from_storage_result = BashOperator(
bash_command=f"echo {cast('str', XComArg(create_build_from_storage, key='results'))}",
task_id="create_build_from_storage_result",
)
默认情况下,构建创建后,operator 会等待构建操作完成。如果无需等待完成,可以按以下示例所示传递 wait=False。
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_without_wait = CloudBuildCreateBuildOperator(
task_id="create_build_without_wait",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_REPO_NO_WAIT_BODY,
wait=False,
)
您可以使用可推迟模式(deferrable mode)以异步方式运行此 operator
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_without_wait = CloudBuildCreateBuildOperator(
task_id="create_build_without_wait",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_REPO_NO_WAIT_BODY,
wait=False,
deferrable=True,
)
为了在 Cloud Build 上启动构建,您可以使用构建配置文件。构建配置文件定义了 Cloud Build 执行任务所需的字段。您可以使用 YAML 或 JSON 语法编写构建配置文件。
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_from_file = CloudBuildCreateBuildOperator(
task_id="create_build_from_file",
project_id=PROJECT_ID,
build=yaml.safe_load((Path(CURRENT_FOLDER) / "resources" / "example_cloud_build.yaml").read_text()),
params={"name": "Airflow"},
)
您可以使用可推迟模式(deferrable mode)以异步方式运行此 operator
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_from_file_deferrable = CloudBuildCreateBuildOperator(
task_id="create_build_from_file_deferrable",
project_id=PROJECT_ID,
build=yaml.safe_load((Path(CURRENT_FOLDER) / "resources" / "example_cloud_build.yaml").read_text()),
params={"name": "Airflow"},
deferrable=True,
)
此外,Cloud Build 可以引用存储在 Google Cloud Source Repositories 中的源代码。构建启动后,它将在源代码仓库中构建代码。
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_from_repo = CloudBuildCreateBuildOperator(
task_id="create_build_from_repo",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_REPO_BODY,
)
您可以使用可推迟模式(deferrable mode)以异步方式运行此 operator
tests/system/google/cloud/cloud_build/example_cloud_build.py
create_build_from_repo = CloudBuildCreateBuildOperator(
task_id="create_build_from_repo",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_REPO_BODY,
deferrable=True,
)
CloudBuildCreateBuildTriggerOperator¶
创建一个新的 Cloud Build 触发器。由此 operator 生成的已创建构建触发器的构建触发器 ID 不是幂等的。
有关参数定义,请参阅 CloudBuildCreateBuildTriggerOperator
使用 operator¶
使用 CloudBuildCreateBuildTriggerOperator
operator 创建一个新的 Cloud Build 触发器。
tests/system/google/cloud/cloud_build/example_cloud_build_trigger.py
create_build_trigger = CloudBuildCreateBuildTriggerOperator(
task_id="create_build_trigger", project_id=PROJECT_ID, trigger=create_build_trigger_body
)
您可以使用 Jinja 模板 和 project_id
, trigger
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildDeleteBuildTriggerOperator¶
按项目 ID 和触发器 ID 删除 Cloud Build 触发器。
有关参数定义,请参阅 CloudBuildDeleteBuildTriggerOperator
使用 operator¶
使用 CloudBuildDeleteBuildTriggerOperator
operator 删除一个新的 Cloud Build 触发器。
tests/system/google/cloud/cloud_build/example_cloud_build_trigger.py
delete_build_trigger = CloudBuildDeleteBuildTriggerOperator(
task_id="delete_build_trigger",
project_id=PROJECT_ID,
trigger_id=build_trigger_id,
)
您可以使用 Jinja 模板 和 project_id
, trigger_id
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildGetBuildOperator¶
返回有关先前请求的构建的信息。
有关参数定义,请参阅 CloudBuildGetBuildOperator
使用 operator¶
使用 CloudBuildGetBuildOperator
operator 返回有关先前请求的构建的信息。
tests/system/google/cloud/cloud_build/example_cloud_build.py
get_build = CloudBuildGetBuildOperator(
task_id="get_build",
id_=cast("str", XComArg(retry_build, key="id")),
project_id=PROJECT_ID,
)
您可以使用 Jinja 模板 和 project_id
, id_
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildGetBuildTriggerOperator¶
返回有关 Cloud Build 触发器的信息。
有关参数定义,请参阅 CloudBuildGetBuildTriggerOperator
使用 operator¶
使用 CloudBuildGetBuildTriggerOperator
operator 返回有关 Cloud Build 触发器的信息。
tests/system/google/cloud/cloud_build/example_cloud_build_trigger.py
get_build_trigger = CloudBuildGetBuildTriggerOperator(
task_id="get_build_trigger",
project_id=PROJECT_ID,
trigger_id=build_trigger_id,
)
您可以使用 Jinja 模板 和 project_id
, trigger_id
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildListBuildTriggersOperator¶
列出所有现有的 Cloud Build 触发器。
有关参数定义,请参阅 CloudBuildListBuildTriggersOperator
使用 operator¶
使用 CloudBuildListBuildTriggersOperator
operator 列出所有现有的 Cloud Build 触发器。
tests/system/google/cloud/cloud_build/example_cloud_build_trigger.py
list_build_triggers = CloudBuildListBuildTriggersOperator(
task_id="list_build_triggers",
project_id=PROJECT_ID,
location="global",
page_size=5,
)
您可以使用 Jinja 模板 和 location
, project_id
, gcp_conn_id
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildListBuildsOperator¶
列出先前请求的构建。
有关参数定义,请参阅 CloudBuildListBuildsOperator
使用 operator¶
使用 CloudBuildListBuildsOperator
operator 列出先前请求的构建。
tests/system/google/cloud/cloud_build/example_cloud_build.py
list_builds = CloudBuildListBuildsOperator(
task_id="list_builds",
project_id=PROJECT_ID,
location="global",
)
您可以使用 Jinja 模板 和 location
, project_id
, gcp_conn_id
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildRetryBuildOperator¶
基于指定构建创建新构建。此方法使用原始构建请求创建一个新构建,结果构建可能与原始构建相同,也可能不同。
有关参数定义,请参阅 CloudBuildRetryBuildOperator
使用 operator¶
使用 CloudBuildRetryBuildOperator
operator 基于指定构建创建新构建。
tests/system/google/cloud/cloud_build/example_cloud_build.py
retry_build = CloudBuildRetryBuildOperator(
task_id="retry_build",
id_=cast("str", XComArg(cancel_build, key="id")),
project_id=PROJECT_ID,
)
您可以使用 Jinja 模板 和 project_id
, id_
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildRunBuildTriggerOperator¶
在特定源代码修订版本上运行触发器。
有关参数定义,请参阅 CloudBuildRunBuildTriggerOperator
使用 operator¶
使用 CloudBuildRunBuildTriggerOperator
operator 在特定源代码修订版本上运行触发器。
tests/system/google/cloud/cloud_build/example_cloud_build_trigger.py
run_build_trigger = CloudBuildRunBuildTriggerOperator(
task_id="run_build_trigger",
project_id=PROJECT_ID,
trigger_id=build_trigger_id,
source=create_build_from_repo_body["source"]["repo_source"],
)
您可以使用 Jinja 模板 和 project_id
, trigger_id
, source
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
CloudBuildUpdateBuildTriggerOperator¶
按项目 ID 和触发器 ID 更新 Cloud Build 触发器。
有关参数定义,请参阅 CloudBuildUpdateBuildTriggerOperator
使用 operator¶
使用 CloudBuildUpdateBuildTriggerOperator
operator 更新 Cloud Build 触发器。
tests/system/google/cloud/cloud_build/example_cloud_build_trigger.py
create_build_trigger = CloudBuildCreateBuildTriggerOperator(
task_id="create_build_trigger", project_id=PROJECT_ID, trigger=create_build_trigger_body
)
您可以使用 Jinja 模板 和 project_id
, trigger_id
, trigger
, gcp_conn_id
, location
参数动态确定值。结果保存到 XCom 中,可供其他 operator 使用。
参考¶
有关进一步信息,请参阅