Google Cloud Build 運算子

Google Cloud Build 是一項在 Google Cloud Platform 基礎架構上執行建置的服務。Cloud Build 可以從 Google Cloud Storage、Cloud Source Repositories 匯入原始碼,根據您的規格執行建置,並產生 Docker 容器或 Java 封存等成品。

先決條件任務

若要使用這些運算子,您必須執行以下幾項操作

CloudBuildCancelBuildOperator

取消進行中的建置。

如需參數定義,請參閱 CloudBuildCancelBuildOperator

使用運算子

使用 CloudBuildCancelBuildOperator 運算子取消進行中的建置。

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,
    )

您可以搭配 project_idid_gcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildCreateBuildOperator

使用指定的組態啟動建置。此運算子產生的建置 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", "args": ["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", "args": ["echo", "Hello world", "sleep 200"]}],
}

請閱讀 建置組態總覽,以瞭解您可以包含在建置組態檔中的所有欄位。

使用運算子

使用 CloudBuildCreateBuildOperator 運算子執行觸發建置。

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,
    )

您可以使用可延遲模式以非同步方式執行此運算子

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,
    )

您可以搭配 project_idbuildgcp_conn_idimpersonation_chainlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

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",
    )

預設情況下,在建立建置後,它會等待建置作業完成。如果不需要等待完成,您可以傳遞 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_BODY,
        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_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"},
)

您可以使用可延遲模式以非同步方式執行此運算子

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,
        )

您可以使用可延遲模式以非同步方式執行此運算子

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 觸發條件。此運算子產生的建置觸發條件 ID 並非等冪。

如需參數定義,請參閱 CloudBuildCreateBuildTriggerOperator

使用運算子

使用 CloudBuildCreateBuildTriggerOperator 運算子建立新的 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
)

您可以搭配 project_idtriggergcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildDeleteBuildTriggerOperator

依專案 ID 和觸發條件 ID 刪除 Cloud Build 觸發條件。

如需參數定義,請參閱 CloudBuildDeleteBuildTriggerOperator

使用運算子

使用 CloudBuildDeleteBuildTriggerOperator 運算子刪除新的 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,
)

您可以搭配 project_idtrigger_idgcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildGetBuildOperator

傳回先前要求之建置的相關資訊。

如需參數定義,請參閱 CloudBuildGetBuildOperator

使用運算子

使用 CloudBuildGetBuildOperator 運算子傳回先前要求之建置的相關資訊。

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,
    )

您可以搭配 project_idid_gcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildGetBuildTriggerOperator

傳回 Cloud Build 觸發條件的相關資訊。

如需參數定義,請參閱 CloudBuildGetBuildTriggerOperator

使用運算子

使用 CloudBuildGetBuildTriggerOperator 運算子傳回 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,
)

您可以搭配 project_idtrigger_idgcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildListBuildTriggersOperator

列出所有現有的 Cloud Build 觸發條件。

如需參數定義,請參閱 CloudBuildListBuildTriggersOperator

使用運算子

使用 CloudBuildListBuildTriggersOperator 運算子列出所有現有的 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,
)

您可以搭配 locationproject_idgcp_conn_id 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildListBuildsOperator

列出先前要求的建置。

如需參數定義,請參閱 CloudBuildListBuildsOperator

使用運算子

使用 CloudBuildListBuildsOperator 運算子列出先前要求的建置。

tests/system/google/cloud/cloud_build/example_cloud_build.py[原始碼]

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

您可以搭配 locationproject_idgcp_conn_id 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildRetryBuildOperator

根據指定的建置建立新的建置。此方法會使用原始建置要求建立新的建置,這可能會或可能不會產生相同的建置。

如需參數定義,請參閱 CloudBuildRetryBuildOperator

使用運算子

使用 CloudBuildRetryBuildOperator 運算子根據指定的建置建立新的建置。

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,
    )

您可以搭配 project_idid_gcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildRunBuildTriggerOperator

在特定的原始碼修訂版本中執行觸發條件。

如需參數定義,請參閱 CloudBuildRunBuildTriggerOperator

使用運算子

使用 CloudBuildRunBuildTriggerOperator 運算子在特定的原始碼修訂版本中執行觸發條件。

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"],
)

您可以搭配 project_idtrigger_idsourcegcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

CloudBuildUpdateBuildTriggerOperator

依專案 ID 和觸發條件 ID 更新 Cloud Build 觸發條件。

如需參數定義,請參閱 CloudBuildUpdateBuildTriggerOperator

使用運算子

使用 CloudBuildUpdateBuildTriggerOperator 運算子更新 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
)

您可以搭配 project_idtrigger_idtriggergcp_conn_idlocation 參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

參考資料

如需更多資訊,請參閱

此條目是否對您有幫助?