透過 Bitbucket Server 建構存放區

Cloud Build 可讓您建立觸發條件,從 Bitbucket Server 託管的存放區進行建構。您可以執行建構作業,因應與 Bitbucket Server 存放區相關聯的提交推送或合併要求等事件。

本頁說明如何為 Bitbucket Server 執行個體啟用建構觸發條件。詳情請參閱「Cloud Build 觸發條件」和「Cloud Build 存放區」。

事前準備

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

如要為 Bitbucket Server 存放區建立觸發事件,您必須在 Google Cloud 和存放區之間建立連線。如要透過 Google Cloud中的 Bitbucket Server 應用程式建立連線,請參閱「連線至 Bitbucket Server 存放區」。

建立 Bitbucket Server 觸發條件

本節說明如何將 Bitbucket Server 存放區連結至 Cloud Build,並建立觸發條件,以便在已連結的存放區中自動叫用版本。如要在私人網路中使用 Bitbucket Server 觸發條件,請參閱「在私人網路中從 Bitbucket Server 建構存放區」一文,瞭解進一步的操作說明。

Google Cloud 控制台

如要使用 Google Cloud 控制台建立 Bitbucket Server 觸發條件,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「Triggers」頁面。

    開啟「觸發條件」頁面

  2. 選取 Google Cloud 專案並按一下「開啟」

  3. 按一下「建立觸發條件」

  4. 輸入下列觸發條件設定:

    • 名稱:輸入觸發條件的名稱。

    • 區域:選取觸發事件的區域

      • 如果與觸發事件相關聯的建構設定檔指定了私人集區,Cloud Build 就會使用私人集區執行建構作業。在這種情況下,您在觸發條件中指定的區域必須與建立私人集區的區域相符。
      • 如果與觸發事件相關聯的建構設定檔「未」指定私人集區,Cloud Build 就會使用預設集區,在與觸發事件相同的區域中執行建構作業。

    • 說明 (選填):輸入觸發條件的說明。

    • 事件:選取要叫用觸發條件的存放區事件。

      • 推送至分支版本:設定觸發條件,在修訂特定分支版本時啟動建構。

      • 推送新代碼標記:設定觸發條件,在包含特定代碼標記的修訂時啟動建構。

      • 提取要求:設定觸發條件,在提取要求的修訂時啟動建構。

    • 來源:設定 Bitbucket Server 存放區的相關資訊:

      • 存放區服務:選取 Cloud Build 存放區。

      • 存放區產生:選取「Developer Connect」做為來源。

      • 存放區:從可用存放區清單中選取存放區。

      • 分支版本標記:指定要比對的分支版本或標記值的規則運算式。如要瞭解可接受的規則運算式語法,請參閱 RE2 語法

      • 註解控制項:如果您選取「Pull Request」做為事件,請選擇下列其中一個選項,控制觸發條件是否自動執行建構作業:

        • 必要 (擁有者和協作者除外):當存放區擁有者或協作者建立或更新拉取要求時,觸發事件會自動執行建構作業。如果是外部貢獻者啟動動作,則只有在擁有者或協作者在提取要求上加註 /gcbrun 後,系統才會執行建構作業。

        • 必要:當任何貢獻者建立或更新提取要求時,只有在擁有者或協作者在提取要求上留言 /gcbrun 後,才會執行建構作業。每次變更提取要求時,系統都會執行建構作業。

        • 非必要:當任何貢獻者建立或更新提取要求時,系統會自動觸發建構作業。

    • 設定:選取存放區中的建構設定檔,或在觸發條件中設定建構作業。

    • 類型:選取要用於建構作業的設定類型。

      • Cloud Build 設定檔 (yaml 或 json):使用建構設定檔來設定。
      • Dockerfile:使用 Dockerfile 進行設定。
    • Location:指定設定檔的位置。

      • 存放區:如果設定檔位於存放區,請提供建構設定檔Dockerfile 目錄的位置,以及產生映像檔的名稱。如果您的設定為 Dockerfile,您可以選擇為建構作業提供逾時時間。提供 Dockerfile 和映像檔名稱之後,您會看見建構作業的 docker build 指令預覽。

      • 內嵌:如果您選取「Cloud Build 設定檔 (yaml 或 json)」做為設定選項,則可內嵌指定建構設定檔。按一下「Open Editor」,即可使用 YAML 或 JSON 語法在Google Cloud 主控台中編寫建構設定檔。按一下「完成」即可儲存建構設定。

  5. 按一下「建立」,即可建立 Bitbucket Cloud 觸發條件。

gcloud CLI

如要使用 gcloud 指令建立 Bitbucket Server 觸發條件,請執行下列指令:

    gcloud alpha builds triggers create developer connect
      --name=TRIGGER_NAME \
      --git-repository-link=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME \
      --branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
      --build-config=BUILD_CONFIG_FILE \
      --region=REGION \
      --service-account=SERVICE-ACCOUNT

其中:

  • TRIGGER_NAME 是觸發條件的名稱。
  • PROJECT_ID 是您的 Google Cloud 專案 ID。
  • REGION 是觸發事件的區域
  • CONNECTION_NAME 是 Bitbucket Server 連線的名稱。
  • GIT_REPOSITORY_LINK 是 Git 存放區的連結。
  • BRANCH_PATTERN 是存放區中用於叫用建構作業的分支名稱。
  • TAG_PATTERN 是存放區中用於叫用建構作業的標記名稱。
  • BUILD_CONFIG_FILE 是建構設定檔的路徑。
  • SERVICE-ACCOUNT 是用於觸發和建構作業的服務帳戶。

API

如要使用 API 建立 Bitbucket Server 觸發條件,請使用下列 JSON 範本:

{
    "filename": "cloudbuild.yaml",
    "name": "curl-trigger",
    "description": "curl trigger",
    "bitbucket_server_trigger_config": {
        "repo_slug": "REPO_SLUG",
        "project_key": "PROJECT_KEY",
        "push": {
            "branch": "BRANCH_NAME" # "tag": "TAG_NAME"
        },
        "bitbucket_server_config_resource": "projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/ID"
        "comment_control": "COMMENT_SETTING"
    }
}

其中:

  • REPO_SLUG 是 Bitbucket Server 存放區的短代碼。詳情請參閱 Bitbucket 的存放區短代號指南
  • PROJECT_KEY 是 Bitbucket Server 專案的金鑰。PROJECT_KEY 須區分大小寫。
  • BRANCH_NAME 是分支的規則運算式,可用於設定觸發條件,以便建構特定分支。
  • 如果您想設定觸發條件以建構特定代碼,TAG_NAME 就是代碼的規則運算式。
  • PROJECT_NUMBER 是 Cloud 專案的專案號碼。
  • REGION 是與 Bitbucket Server 設定相關聯的區域
  • ID 是 BitbucketServerConfig 的 ID。
  • COMMENT_SETTING 是用來控管自動建構觸發條件是否需要在註解中加入 /gcbrun,以便建構作業執行。詳情請參閱 commentControl

在終端機中輸入下列 curl 指令:

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json

其中:

  • PROJECT_NUMBER 是您的 Google Cloud 專案編號。
  • PROJECT_ID 是您的 Google Cloud 專案 ID。

資料共用

Cloud Build 傳送至 Bitbucket Server 的資料可協助您依名稱識別觸發事件,並在 Bitbucket Server 上查看建構結果。

Cloud Build 和 Bitbucket Server 之間會共用下列資料:

  • Google Cloud 專案 ID
  • 觸發條件名稱

Bitbucket Server 會自動啟用資料共用功能。

後續步驟