將 Firebase Test Lab 事件轉送至工作流程

Eventarc 觸發條件會宣告您對特定事件或一組事件感興趣。您可以為觸發事件指定篩選器 (包括事件來源) 和目標工作流程,藉此設定事件轉送。

事件會以 CloudEvents 格式透過 HTTP 要求傳送。工作流程服務會將事件轉換為 JSON 物件 (依據 CloudEvents 規格),並將事件傳遞至工作流程執行作業,做為工作流程執行階段引數。請確認事件大小不得超過 512 KB。事件大小若超過 Workflows 引數大小上限,就不會觸發工作流程執行作業。

本操作說明將說明如何設定事件路由,以便在直接Firebase Test Lab 事件發生時觸發工作流程執行作業。詳情請參閱支援的直接事件清單。

TestMatrix 完成後,系統會根據事件觸發對服務的請求。

準備建立觸發條件

為目標工作流程建立 Eventarc 觸發事件前,請先完成下列工作。

主控台

  1. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案

    前往專案選取器

  2. 啟用 Eventarc、Eventarc 發布、Workflows 和 Workflow Executions API。

    啟用 API

  3. 如有需要,請啟用與直接事件相關的 API。例如,如果是 Firebase Test Lab 事件,請啟用Firebase Test Lab API。

  4. 如果您還沒有這類帳戶,請建立使用者代管的服務帳戶,然後授予必要的角色和權限,以便 Eventarc 管理目標工作流程的事件。

    1. 前往 Google Cloud 控制台的「Service Accounts」頁面。

      前往「Service Accounts」(服務帳戶)

    2. 選取專案。

    3. 在「Service account name」(服務帳戶名稱) 欄位中輸入名稱。 Google Cloud 控制台會根據這個名稱填入「Service account ID」欄位。

      在「服務帳戶說明」欄位中輸入說明。例如:Service account for event trigger

    4. 按一下「建立並繼續」

    5. 如要提供適當的存取權,請在「Select a role」(請選擇角色) 清單中,選取要授予服務帳戶的必要 Identity and Access Management (IAM) 角色。詳情請參閱「工作流程目標的角色和權限」。

      如要新增其他角色,請按一下 「Add another role」(新增其他角色),然後新增其他角色。

    6. 點選「繼續」

    7. 如要完成帳戶建立程序,請按一下「完成」

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 啟用 Eventarc、Eventarc 發布、Workflows 和 Workflow Executions API:

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com

  3. 如有需要,請啟用與直接事件相關的 API。例如,針對 Firebase Test Lab 事件,請啟用 testing.googleapis.com

  4. 如果您還沒有使用者代管的服務帳戶,請建立這類帳戶,然後授予必要的角色和權限,以便 Eventarc 管理目標工作流程的事件。

    1. 建立服務帳戶:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME 替換為服務帳戶名稱。長度必須介於 6 至 30 個半形字元,可以使用小寫英數字元和破折號。建立服務帳戶後,就無法變更名稱。

    2. 授予必要的 Identity and Access Management (IAM) 角色或權限。詳情請參閱「工作流程目標的角色和權限」。

建立觸發條件

您可以使用 Google Cloud CLI (gcloud 或 Terraform) 或 Google Cloud 主控台,建立 Eventarc 觸發事件,並將已部署的工作流程設為事件接收器。

主控台

  1. 在 Google Cloud 控制台中,前往 Eventarc「Triggers」頁面。

    前往「Triggers」(觸發條件)

  2. 按一下 「建立觸發條件」
  3. 輸入觸發條件名稱

    這是觸發事件的 ID,開頭必須是英文字母。最多可以包含 63 個小寫英文字母、數字或連字號。

  4. 在「Trigger type」(觸發條件類型) 中,選取「Google sources」(Google 來源)
  5. 在「Event provider」清單中,選取「Firebase Test Lab」

    請注意,相關Google Cloud 說明文件中使用的事件提供者名稱可能沒有 CloudGoogle Cloud 前置字串。舉例來說,在控制台中,Memorystore for Redis 會稱為 Google Cloud Memorystore for Redis

  6. 在「Event type」清單中,從「Direct」事件中選取事件類型。
  7. 如要指定事件酬載的編碼方式,請在「事件資料內容類型」清單中選取「application/json」或「application/protobuf」

    請注意,以 JSON 格式編寫的事件酬載比以 Protobuf 格式編寫的酬載大。這可能會影響可靠性,具體取決於事件目的地和事件大小限制。詳情請參閱「已知問題」。

  8. 在「區域」清單中選取「global (Global)」

    詳情請參閱「Eventarc 位置」。

  9. 選取要叫用服務或工作流程的服務帳戶

    或者,您也可以建立新的服務帳戶。

    這會指定與觸發事件相關聯的 Identity and Access Management (IAM) 服務帳戶電子郵件地址,以及您先前授予 Eventarc 所需的特定角色

  10. 在「Event destination」清單中,選取「Workflows」
  11. 選取工作流程。

    這是要傳遞事件的工作流程名稱。工作流程執行作業的事件會經過轉換,並以執行階段引數的形式傳遞至工作流程。

    詳情請參閱「 建立 Workflows 觸發事件」一文。

  12. 如要新增標籤,您可以選擇按一下 「新增標籤」。標籤是鍵/值組合,可協助您整理Google Cloud 資源。詳情請參閱「什麼是標籤?
  13. 點選「建立」
  14. 建立觸發條件後,就無法修改事件來源篩選器。請改為建立新的觸發條件,並刪除舊的觸發條件。詳情請參閱「管理觸發條件」。

gcloud

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-workflow=DESTINATION_WORKFLOW  \
    --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
    --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

更改下列內容:

  • TRIGGER:觸發條件 ID 或完整修飾 ID。
  • DESTINATION_WORKFLOW:接收觸發事件的已部署工作流程 ID。工作流程可以位於任何支援的工作流程位置,且不必與觸發事件位於相同位置。不過,工作流程必須位於與觸發事件相同的專案中。
  • DESTINATION_WORKFLOW_LOCATION (選用):目標工作流程的部署位置。如果未指定,系統會假設工作流程與觸發事件位於相同位置。
  • EVENT_DATA_CONTENT_TYPE:(選用) 事件酬載的編碼。可以是 application/jsonapplication/protobuf。預設編碼為 application/json

    請注意,以 JSON 格式編寫的事件酬載比以 Protobuf 格式編寫的酬載大。這可能會影響可靠性,具體取決於事件目的地和事件大小限制。詳情請參閱「已知問題」。

  • SERVICE_ACCOUNT_NAME:您建立的 IAM 服務帳戶名稱,您已向該帳戶授予工作流程所需的特定角色。
  • PROJECT_ID:您的 Google Cloud 專案 ID

注意:

  • --location 旗標必須為 global。詳情請參閱 Eventarc 位置
  • 必須使用 --event-filters 旗標,且類型必須為 google.firebase.testlab.testMatrix.v1.completed。當 TestMatrix 完成時,系統會傳送事件。
  • 建立觸發條件後,就無法變更事件篩選器類型。如要使用其他事件類型,您必須建立新的觸發條件。
  • --service-account:Eventarc 觸發條件會使用此 IAM 服務帳戶電子郵件地址,叫用工作流程執行作業。強烈建議您使用服務帳戶,並授予存取必要資源所需的最低權限。如要進一步瞭解服務帳戶,請參閱「建立及管理服務帳戶」。
  • 根據預設,為 Eventarc 建立的 Pub/Sub 訂閱會持續保留,無論是否有活動都不會過期。如要變更閒置時間長度,請參閱「訂閱屬性」。

範例:

gcloud eventarc triggers create tl-workflows-trigger \
    --location=global \
    --destination-workflow=my-workflow \
    --destination-workflow-location=europe-west4 \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

這個指令會為標示為 google.firebase.testlab.testMatrix.v1.completed 的事件建立名為 tl-workflows-trigger 的觸發條件。

Terraform

您可以使用 Terraform 建立工作流程的觸發條件。詳情請參閱「使用 Eventarc 和 Terraform 觸發工作流程」一文。

列出觸發條件

您可以使用 Google Cloud CLI 或 Google Cloud 主控台列出 Eventarc 觸發事件,確認是否已建立觸發事件。

主控台

  1. 在 Google Cloud 控制台中,前往「Eventarc」「Triggers」(觸發條件) 頁面。

    前往「Triggers」(觸發條件)

    這個頁面會列出所有位置的觸發事件,並提供名稱、區域、事件供應者、目的地等詳細資料。

  2. 如要篩選觸發條件,請按照下列步驟操作:

    1. 按一下 「篩選器」或「篩選器觸發條件」欄位。
    2. 在「Properties」清單中,選取要用來篩選觸發條件的選項。

    您可以選取單一資源,或使用邏輯運算子 OR 新增更多資源。

  3. 如要排序觸發事件,請按一下任何支援的欄標題旁邊的 「排序」

gcloud

執行下列指令,列出觸發條件:

gcloud eventarc triggers list --location=-

這個指令會列出所有位置的觸發事件,並提供名稱、類型、目的地和狀態等詳細資料。

後續步驟