Google Cloud Build 算子

Google Cloud Build 是一项在 Google Cloud Platform 基础设施上执行构建的服务。Cloud Build 可以从 Google Cloud Storage、Cloud Source Repositories 导入源代码,根据您的规范执行构建,并生成诸如 Docker 容器或 Java 存档之类的工件。

先决任务

要使用这些算子,您必须执行一些操作

CloudBuildCancelBuildOperator

取消正在进行的构建。

有关参数定义,请参阅 CloudBuildCancelBuildOperator

使用算子

使用 CloudBuildCancelBuildOperator 运算符取消正在进行的构建。

tests/system/providers/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 中,这允许其他运算符使用它。

CloudBuildCreateBuildOperator

使用指定的配置启动构建。此运算符生成的已创建构建的构建 ID 作为结果,不是幂等的。

有关参数定义,请参阅 CloudBuildCreateBuildOperator

构建配置

为了触发构建,必须传递构建配置。

tests/system/providers/google/cloud/cloud_build/example_cloud_build.py[源代码]

CREATE_BUILD_FROM_STORAGE_BODY = {
    "source": {"storage_source": GCP_SOURCE_ARCHIVE_URL},
    "steps": [{"name": "ubuntu", "args": ["echo", "Hello world"]}],
}

此外,构建可以引用存储在 Google Cloud 源代码存储库 中的源代码。

tests/system/providers/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", "args": ["echo", "Hello world"]}],
}

阅读 构建配置概述 以了解你可以在构建配置文件中包含的所有字段。

使用运算符

使用 CloudBuildCreateBuildOperator 运算符执行构建触发。

tests/system/providers/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,
    )

你可以为此操作使用可延迟模式,以便异步运行运算符

tests/system/providers/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,这允许其他运算符使用它。

tests/system/providers/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",
    )

默认情况下,在创建构建后,它将等待构建操作完成。如果没有必要等待完成,你可以传递 wait=False,如下例所示。

tests/system/providers/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_BODY,
        wait=False,
    )

你可以为此操作使用可延迟模式,以便异步运行运算符

tests/system/providers/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_BODY,
        wait=False,
        deferrable=True,
    )

为了在 Cloud Build 上启动构建,你可以使用构建配置文件。构建配置文件定义 Cloud Build 执行任务所需字段。你可以使用 YAML 或 JSON 语法编写构建配置文件。

tests/system/providers/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"},
)

你可以为此操作使用可延迟模式,以便异步运行运算符

tests/system/providers/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/providers/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,
        )

你可以为此操作使用可延迟模式,以便异步运行运算符

tests/system/providers/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 触发器。此运算符生成的创建的构建触发器的构建触发器 ID 作为结果,不是幂等的。

有关参数定义,请参阅 CloudBuildCreateBuildTriggerOperator

使用该运算符

使用 CloudBuildCreateBuildTriggerOperator 运算符创建新的 Cloud Build 触发器。

tests/system/providers/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_idtriggergcp_conn_idlocation 参数一起使用,以便动态确定值。结果会保存到 XCom 中,以便其他运算符使用它。

CloudBuildDeleteBuildTriggerOperator

按项目 ID 和触发器 ID 删除 Cloud Build 触发器。

有关参数定义,请参阅 CloudBuildDeleteBuildTriggerOperator

使用运算符

使用 CloudBuildDeleteBuildTriggerOperator 运算符删除新的 Cloud Build 触发器。

tests/system/providers/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_idtrigger_idgcp_conn_idlocation 参数结合使用,以便动态确定值。结果保存到 XCom 中,以便其他运算符使用它。

CloudBuildGetBuildOperator

返回先前请求的构建的信息。

有关参数定义,请查看 CloudBuildGetBuildOperator

使用运算符

使用 CloudBuildGetBuildOperator 运算符返回先前请求的构建的信息。

tests/system/providers/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 中,这允许其他运算符使用它。

CloudBuildGetBuildTriggerOperator

返回有关 Cloud Build 触发器的信息。

有关参数定义,请参阅 CloudBuildGetBuildTriggerOperator

使用运算符

使用 CloudBuildGetBuildTriggerOperator 运算符返回有关 Cloud Build 触发器的信息。

tests/system/providers/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_idtrigger_idgcp_conn_idlocation 参数结合使用,以便动态确定值。结果保存到 XCom 中,以便其他运算符使用它。

CloudBuildListBuildTriggersOperator

列出所有现有的 Cloud Build 触发器。

有关参数定义,请参阅 CloudBuildListBuildTriggersOperator

使用运算符

使用 CloudBuildListBuildTriggersOperator 运算符列出所有现有的 Cloud Build 触发器。

tests/system/providers/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,
)

您可以在 location, project_id, gcp_conn_id 参数中使用 Jinja 模板,这允许您动态确定值。结果保存到 XCom 中,这允许其他运算符使用它。

CloudBuildListBuildsOperator

列出先前请求的构建。

有关参数定义,请参阅 CloudBuildListBuildsOperator

使用运算符

使用 CloudBuildListBuildsOperator 运算符列出先前请求的构建。

tests/system/providers/google/cloud/cloud_build/example_cloud_build.py[源代码]

list_builds = CloudBuildListBuildsOperator(
    task_id="list_builds",
    project_id=PROJECT_ID,
    location="global",
)

您可以在 location, project_id, gcp_conn_id 参数中使用 Jinja 模板,这允许您动态确定值。结果保存到 XCom 中,这允许其他运算符使用它。

CloudBuildRetryBuildOperator

根据指定的构建创建新的构建。此方法使用原始构建请求创建新的构建,这可能会或可能不会导致相同的构建。

有关参数定义,请参阅 CloudBuildRetryBuildOperator

使用运算符

使用 CloudBuildRetryBuildOperator 运算符根据指定的构建创建新的构建。

tests/system/providers/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 中,这允许其他运算符使用它。

CloudBuildRunBuildTriggerOperator

在特定源版本上运行触发器。

有关参数定义,请参阅 CloudBuildRunBuildTriggerOperator

使用运算符

使用 CloudBuildRunBuildTriggerOperator 运算符在特定源版本上运行触发器。

tests/system/providers/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_idtrigger_idsourcegcp_conn_idlocation 参数结合使用,以便动态确定值。结果保存到 XCom,以便其他运算符使用它。

CloudBuildUpdateBuildTriggerOperator

通过项目 ID 和触发器 ID 更新 Cloud Build 触发器。

有关参数定义,请查看 CloudBuildUpdateBuildTriggerOperator

使用运算符

使用 CloudBuildUpdateBuildTriggerOperator 运算符更新 Cloud Build 触发器。

tests/system/providers/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_idtrigger_idtriggergcp_conn_idlocation 参数结合使用,以便动态确定值。结果保存到 XCom,以便其他运算符使用它。

参考

有关更多信息,请查看

此条目是否有帮助?