本頁說明如何將 Bitbucket Data Center 主機連線至 Cloud Build。
事前準備
-
Enable the Cloud Build, Secret Manager, and Compute Engine APIs.
- 準備好 Bitbucket 資料中心存放區中的原始碼。
- 在 Bitbucket Data Center 來源存放區中,有
Dockerfile
或 Cloud Build 設定檔。 - 如果您尚未安裝 Bitbucket Data Center 執行個體,請參閱「安裝 Bitbucket Data Center」一文的操作說明。
如要使用本頁的
gcloud
指令,請安裝 Google Cloud CLI。
連線至 Bitbucket 資料中心主機
主控台
如要使用 Google Cloud 控制台將 Bitbucket Data Center 主機連結至 Cloud Build,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Repositories」頁面:
選取頁面頂端的「第 1 代」分頁標籤。
按一下「連結主機」。
從下拉式選單中選取「Bitbucket Data Center」。
畫面上會顯示「Connect host」面板。
輸入下列資訊,將 Bitbucket Data Center 執行個體連結至 Cloud Build:
區域:選取連線的區域。
名稱:輸入連線名稱。
主機網址:Bitbucket Data Center 執行個體的主機網址。例如:
https://bbs.example-test.com:7990
。Google Cloud API 金鑰:輸入用於驗證憑證的 API 金鑰。
CA 憑證:您的自行簽署憑證。憑證大小不得超過 10 KB,且應採用 PEM 格式 (
.pem
、.cer
或.crt
)。如果您在此欄位中未填入任何內容, Google Cloud 會使用預設憑證組合中的憑證。使用者名稱:Bitbucket Data Center 帳戶使用者名稱。這個帳戶應具備要連結至 Cloud Build 的存放區的管理員存取權。
讀取存取權杖:輸入 Bitbucket Data Center 帳戶個人存取權杖,並附上讀取權限。
管理員存取權杖:輸入 Bitbucket Data Center 帳戶的個人存取權杖,該權杖具有專案和存放區的管理員權限。
在「Network type」下方,選取下列任一選項:
公開網際網路:如果您可以透過公開網際網路存取執行個體,請選取這個選項。
私人網路:如果執行個體是託管在私人網路上,請選取這個選項。
專案:選取您的 Google Cloud 專案 ID。
網路:從下拉式選單中選取網路。如果您尚未建立網路,請參閱「建立及管理虛擬私有雲網路」,瞭解如何建立網路。
IP 範圍:輸入可在已配對網路的已分配範圍內指派給 VM 的內部 IP 範圍。
您可以使用
STARTING_IP/SUBNET_PREFIX_SIZE
格式的無類別跨網域路由 (CIDR) 路由標記法指定範圍。例如192.0.2.0/24
的前置碼長度為 24。IP 範圍的前 24 位元會用於子網路遮罩 (192.0.2.0
),而可能的主機位址範圍則從192.0.2.0
到192.0.2.255
。前置字串長度不得超過
/29
。如果未指定範圍值,系統會自動指派預設值/24
。如果未指定前置字元長度值,系統會在已建立連線的 VPC 網路中自動指派 IP 位址。如果未指定 IP 位址值,系統會自動在對等 VPC 網路中指派 IP 位址範圍。
按一下「連結主機」。
如果 Bitbucket Data Center 例項位於對等網路上,連線至主機可能需要幾分鐘才能完成。
系統會將您重新導向至「Connect Repository」面板。
建立主機連線後,系統會將個人存取權杖和 webhook 密鑰安全地儲存在 Secret Manager 中。您可以在 Secret Manager 頁面查看及管理密鑰。
gcloud
如要使用 gcloud
指令將 Bitbucket Data Center 主機連線至 Cloud Build,您必須在終端機中執行 gcloud alpha builds enterprise-config bitbucketserver create
指令。與使用Google Cloud 主控台連線不同,您必須先手動將個人存取權杖和 webhook 密碼儲存在 Secret Manager 中,才能執行下列指令:
gcloud alpha builds enterprise-config bitbucketserver create
--name=BITBUCKET_DATA_CENTER_CONFIG_NAME \
--user-name=USERNAME \
--host-uri=HOST_URI \
--admin-access-token-secret-version=ADMIN_ACCESS_TOKEN_SECRET_VERSION \
--read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
--webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
--api-key=API_KEY \
--peered-network=PEERED_NETWORK \
--peered-network-ip-range=PEERED_NETWORK_IP_RANGE \
--ssl-ca-file=SSL_CA_FILE
其中:
- BITBUCKET_DATA_CENTER_CONFIG_NAME 是 Bitbucket Data Center 設定的名稱。
- USERNAME 是 Bitbucket Data Center 使用者名稱。
- HOST_URI 是 Bitbucket Data Center 執行個體的主機 URI。
- ADMIN_ACCESS_TOKEN_SECRET_VERSION 是儲存在 Secret Manager 中的管理員存取權權杖的資源名稱。儲存在 Secret Manager 中的密鑰預期格式為
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}
。您可以將latest
指定為版本,以便使用最新版本的機密金鑰。這項設定適用於儲存在 Secret Manager 中的每項資源。
- READ_ACCESS_TOKEN_SECRET_VERSION 是儲存在 Secret Manager 中的讀取存取權權杖資源名稱。
- WEBHOOK_SECRET_SECRET_VERSION 是儲存在 Secret Manager 中的 webhook 密鑰資源名稱。
- API_KEY 是 Google Cloud API 金鑰。
選用:PEERED_NETWORK 是內部部署 Bitbucket 資料中心執行個體要連線的 VPC 網路。如需更多資訊,請參閱「在私人網路中從 Bitbucket Data Center 建構存放區」。
選用:PEERED_NETWORK_IP_RANGE 是內部 IP 範圍,可在已配對網路的已分配範圍內指派給 VM。
SSL_CA_FILE 是本機檔案的路徑,其中包含用於 Bitbucket Data Center 要求的 SSL 憑證。憑證應採用 PEM 格式。
API
如要使用 API 將 Bitbucket Data Center 主機連結至 Cloud Build,請使用下列 JSON 範本。與使用 Google Cloud 控制台連線不同,您必須先在 Secret Manager 中手動儲存個人存取權權杖和 webhook 密鑰,才能呼叫 API:
{
"hostUri": "HOST_URI",
"username": "USERNAME",
"apiKey": "API_KEY",
"secrets": {
"adminAccessTokenVersionName": "ADMIN_ACCESS_TOKEN_SECRET_VERSION",
"readAccessTokenVersionName": "READ_ACCESS_TOKEN_SECRET_VERSION",
"webhookSecretVersionName": "WEBHOOK_SECRET_SECRET_VERSION",
},
"peeredNetwork": "PEERED_NETWORK",
"peeredNetworkIpRange": "PEERED_NETWORK_IP_RANGE",
"sslCa": "SSL_CERTIFICATE"
}
其中:
- HOST_URI 是 Bitbucket Data Center 執行個體的主機 URI。
- USERNAME 是 Bitbucket Data Center 使用者名稱。
- API_KEY 是 Google Cloud API 金鑰。
ADMIN_ACCESS_TOKEN_SECRET_VERSION 是儲存在 Secret Manager 中的管理員存取權權杖的資源名稱。您可能需要將 Secret Manager Secret Accessor 角色授予 Cloud Build 服務代理
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com
。詳情請參閱「為服務帳戶授予 Secret Manager 角色」。READ_ACCESS_TOKEN_SECRET_VERSION 是儲存在 Secret Manager 中的讀取存取權杖的資源名稱。
WEBHOOK_SECRET_SECRET_VERSION 是儲存在 Secret Manager 中的 webhook 密鑰資源名稱。
選用:PEERED_NETWORK 是內部部署 Bitbucket 資料中心執行個體的對等網路。
您可以使用
STARTING_IP/SUBNET_PREFIX_SIZE
格式的無類別跨網域路由 (CIDR) 路由標記法指定範圍。例如,192.0.2.0/24
的前置碼長度為 24。IP 範圍的前 24 位元會用於子網路遮罩 (192.0.2.0
),而可能的主機位址範圍則從192.0.2.0
到192.0.2.225
。選用:PEERED_NETWORK_IP_RANGE 是內部 IP 範圍,可在已配對網路的已分配範圍內指派給 VM。
選用:SSL_CERTIFICATE 是用於內部部署的 Bitbucket Data Center 執行個體的 SSL 憑證。
在終端機中輸入下列 curl
指令:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_DATA_CENTER_CONFIG_NAME -d @config.json
其中:
- PROJECT_ID 是您的 Google Cloud 專案 ID。
- REGION 是與 Bitbucket Data Center 設定相關聯的區域。
- BITBUCKET_DATA_CENTER_CONFIG_NAME 是 Bitbucket Data Center 設定的名稱。
如果成功,回應主體即會包含新建立的 Operation 執行個體。
在終端機中輸入下列 curl
指令:
curl -X GET -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/locations/REGION/operations/OPERATION_ID
其中:
- PROJECT_NUMBER 是您的 Google Cloud 專案編號。
- PROJECT_ID 是您的 Google Cloud 專案 ID。
- REGION 是與 Bitbucket Data Center 設定相關聯的區域。
- OPERATION_ID 是 Bitbucket Data Center 設定建立作業的 ID。
您可能需要持續執行 GetOperation API 指令,直到回應中出現 done: true
為止,這表示作業已完成。如果 Bitbucket Data Center 設定建立成功,您可以在 response.value
欄位中看到該設定。否則,請參閱 error
欄位,取得詳細的錯誤報告。