Google Cloud Build 運算子¶
Google Cloud Build 是一項在 Google Cloud Platform 基礎架構上執行建置的服務。Cloud Build 可以從 Google Cloud Storage、Cloud Source Repositories 匯入原始碼,根據您的規格執行建置,並產生 Docker 容器或 Java 封存等成品。
先決條件任務¶
若要使用這些運算子,您必須執行以下幾項操作
使用 Cloud Console 選取或建立 Cloud Platform 專案。
為您的專案啟用計費功能,如 Google Cloud 文件所述。
啟用 API,如 Cloud Console 文件所述。
透過 pip 安裝 API 程式庫。
pip install 'apache-airflow[google]'如需詳細資訊,請參閱 安裝。
使用運算子¶
使用 CloudBuildCancelBuildOperator
運算子取消進行中的建置。
cancel_build = CloudBuildCancelBuildOperator(
task_id="cancel_build",
id_=cast(str, XComArg(create_build_without_wait, key="id")),
project_id=PROJECT_ID,
)
您可以搭配 project_id
、id_
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
CloudBuildCreateBuildOperator¶
使用指定的組態啟動建置。此運算子產生的建置 ID 並非等冪。
如需參數定義,請參閱 CloudBuildCreateBuildOperator
建置組態¶
為了觸發建置,必須傳遞建置組態。
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 中的原始碼。
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
運算子執行觸發建置。
create_build_from_storage = CloudBuildCreateBuildOperator(
task_id="create_build_from_storage",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_STORAGE_BODY,
)
您可以使用可延遲模式以非同步方式執行此運算子
create_build_from_storage = CloudBuildCreateBuildOperator(
task_id="create_build_from_storage",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_STORAGE_BODY,
deferrable=True,
)
您可以搭配 project_id
、build
、gcp_conn_id
、impersonation_chain
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
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,如下例所示。
create_build_without_wait = CloudBuildCreateBuildOperator(
task_id="create_build_without_wait",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_REPO_BODY,
wait=False,
)
您可以使用可延遲模式以非同步方式執行此運算子
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 語法編寫建置組態檔。
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"},
)
您可以使用可延遲模式以非同步方式執行此運算子
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 中的原始碼。一旦建置開始,它將建置原始碼儲存庫中的程式碼。
create_build_from_repo = CloudBuildCreateBuildOperator(
task_id="create_build_from_repo",
project_id=PROJECT_ID,
build=CREATE_BUILD_FROM_REPO_BODY,
)
您可以使用可延遲模式以非同步方式執行此運算子
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 觸發條件。
create_build_trigger = CloudBuildCreateBuildTriggerOperator(
task_id="create_build_trigger", project_id=PROJECT_ID, trigger=create_build_trigger_body
)
您可以搭配 project_id
、trigger
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
CloudBuildDeleteBuildTriggerOperator¶
依專案 ID 和觸發條件 ID 刪除 Cloud Build 觸發條件。
如需參數定義,請參閱 CloudBuildDeleteBuildTriggerOperator
使用運算子¶
使用 CloudBuildDeleteBuildTriggerOperator
運算子刪除新的 Cloud Build 觸發條件。
delete_build_trigger = CloudBuildDeleteBuildTriggerOperator(
task_id="delete_build_trigger",
project_id=PROJECT_ID,
trigger_id=build_trigger_id,
)
您可以搭配 project_id
、trigger_id
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
使用運算子¶
使用 CloudBuildGetBuildOperator
運算子傳回先前要求之建置的相關資訊。
get_build = CloudBuildGetBuildOperator(
task_id="get_build",
id_=cast(str, XComArg(retry_build, key="id")),
project_id=PROJECT_ID,
)
您可以搭配 project_id
、id_
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
CloudBuildGetBuildTriggerOperator¶
傳回 Cloud Build 觸發條件的相關資訊。
如需參數定義,請參閱 CloudBuildGetBuildTriggerOperator
使用運算子¶
使用 CloudBuildGetBuildTriggerOperator
運算子傳回 Cloud Build 觸發條件的相關資訊。
get_build_trigger = CloudBuildGetBuildTriggerOperator(
task_id="get_build_trigger",
project_id=PROJECT_ID,
trigger_id=build_trigger_id,
)
您可以搭配 project_id
、trigger_id
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
CloudBuildListBuildTriggersOperator¶
列出所有現有的 Cloud Build 觸發條件。
如需參數定義,請參閱 CloudBuildListBuildTriggersOperator
使用運算子¶
使用 CloudBuildListBuildTriggersOperator
運算子列出所有現有的 Cloud Build 觸發條件。
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
運算子列出先前要求的建置。
list_builds = CloudBuildListBuildsOperator(
task_id="list_builds",
project_id=PROJECT_ID,
location="global",
)
您可以搭配 location
、project_id
、gcp_conn_id
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
CloudBuildRetryBuildOperator¶
根據指定的建置建立新的建置。此方法會使用原始建置要求建立新的建置,這可能會或可能不會產生相同的建置。
如需參數定義,請參閱 CloudBuildRetryBuildOperator
使用運算子¶
使用 CloudBuildRetryBuildOperator
運算子根據指定的建置建立新的建置。
retry_build = CloudBuildRetryBuildOperator(
task_id="retry_build",
id_=cast(str, XComArg(cancel_build, key="id")),
project_id=PROJECT_ID,
)
您可以搭配 project_id
、id_
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
使用運算子¶
使用 CloudBuildRunBuildTriggerOperator
運算子在特定的原始碼修訂版本中執行觸發條件。
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_id
、trigger_id
、source
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。
CloudBuildUpdateBuildTriggerOperator¶
依專案 ID 和觸發條件 ID 更新 Cloud Build 觸發條件。
如需參數定義,請參閱 CloudBuildUpdateBuildTriggerOperator
使用運算子¶
使用 CloudBuildUpdateBuildTriggerOperator
運算子更新 Cloud Build 觸發條件。
create_build_trigger = CloudBuildCreateBuildTriggerOperator(
task_id="create_build_trigger", project_id=PROJECT_ID, trigger=create_build_trigger_body
)
您可以搭配 project_id
、trigger_id
、trigger
、gcp_conn_id
、location
參數使用 Jinja 模板,讓您能動態決定數值。結果會儲存到 XCom,以便其他運算子使用。