Halaman ini menjelaskan cara menghubungkan host Pusat Data Bitbucket ke Cloud Build.
Sebelum memulai
-
Enable the Cloud Build and Secret Manager APIs.
- Siapkan kode sumber Anda di repositori Pusat Data Bitbucket.
- Memiliki
Dockerfile
atau file konfigurasi Cloud Build di repositori sumber Pusat Data Bitbucket Anda. - Jika Anda belum menginstal instance Pusat Data Bitbucket, lihat Menginstal Pusat Data Bitbucket untuk mengetahui petunjuknya.
Untuk menggunakan perintah
gcloud
di halaman ini, instal Google Cloud CLI.
Izin IAM yang diperlukan
- Untuk mendapatkan izin yang diperlukan guna menghubungkan host Pusat Data Bitbucket, minta administrator untuk memberi Anda peran IAM Cloud Build Connection Admin (
roles/cloudbuild.connectionAdmin
) di akun pengguna. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran bawaan lainnya.
- Jika instance Pusat Data Bitbucket Anda dihosting di jaringan pribadi, lihat Membangun repositori dari Pusat Data Bitbucket di jaringan pribadi untuk mempelajari peran IAM tambahan yang diperlukan sebelum koneksi host.
Menghubungkan ke host Pusat Data Bitbucket
Sebelum membuat koneksi host untuk instance Pusat Data Bitbucket, Anda harus membuat token akses pribadi di Pusat Data Bitbucket dengan menyelesaikan langkah-langkah berikut:
Login ke instance Pusat Data Bitbucket.
Ikuti petunjuk untuk membuat token akses HTTP untuk akun pengguna Anda.
Buat token akses dengan cakupan admin repositori untuk digunakan dalam menghubungkan dan memutuskan koneksi repositori.
Buat token akses dengan cakupan baca repositori untuk memastikan repositori Cloud Build dapat mengakses kode sumber di repositori.
Konsol
Untuk menghubungkan host Pusat Data Bitbucket ke Cloud Build:
Buka halaman Repositories di konsol Google Cloud.
Anda akan melihat halaman Repositori.
Di bagian atas halaman, pilih tab Generasi ke-2.
Di pemilih project di panel atas, pilih project Google Cloud Anda.
Klik Create host connection untuk menghubungkan host baru ke Cloud Build.
Di panel kiri, pilih Bitbucket sebagai penyedia sumber Anda.
Di bagian Configure Connection, masukkan informasi berikut:
Region: Pilih region untuk koneksi Anda. Anda harus menentukan wilayah. Koneksi Anda tidak dapat ada secara global.
Nama: Masukkan nama untuk koneksi Anda.
Di bagian Detail host, pilih atau masukkan informasi berikut:
Host Bitbucket: Pilih Pusat Data Bitbucket sebagai host Anda.
URL Host: Masukkan URL host Pusat Data Bitbucket Anda.
Di bagian Networking, pilih salah satu opsi berikut:
Internet publik: Pilih opsi ini jika instance Anda dapat diakses menggunakan internet publik.
Jaringan pribadi: Pilih opsi ini jika instance Anda dihosting di jaringan pribadi.
Sertifikat CA: Sertifikat yang ditandatangani sendiri. Klik Browse untuk membuka sertifikat dari komputer lokal Anda.
Ukuran sertifikat Anda tidak boleh melebihi 10 KB dan harus dalam format PEM (
.pem
,.cer
,atau.crt
). Jika Anda membiarkan kolom ini kosong, Cloud Build akan menggunakan sertifikat dari kumpulan sertifikat default.Di bagian Layanan Direktori Layanan, pilih lokasi layanan Anda. Anda dapat menerima project ID yang telah diisi otomatis atau menentukan project lain.
Pilih project layanan Anda. Anda dapat menerima project yang telah diisi otomatis, memilih Dalam project lain untuk menjelajahi, atau memilih Masukkan secara manual.
Jika Anda memilih masukkan informasi berikut:
Project: Masukkan atau pilih Google CloudProject ID Anda dari menu drop-down.
Region: Kolom ini memilih region koneksi Anda secara otomatis. Region yang ditentukan untuk layanan Anda harus cocok dengan region yang terkait dengan koneksi Anda.
Namespace: Pilih namespace layanan Anda.
Layanan: Pilih nama layanan di namespace Anda.
Di bagian HTTP access tokens, masukkan informasi berikut:
Token akses admin: Masukkan token dengan akses cakupan admin repositori. Token ini digunakan untuk menghubungkan dan memutuskan koneksi repositori.
Token akses baca: Masukkan token dengan akses cakupan baca repositori. Pemicu Cloud Build menggunakan token ini untuk mengakses kode sumber di repositori.
Klik Connect.
Setelah mengklik tombol Hubungkan, token akses pribadi Anda akan disimpan dengan aman di Secret Manager. Setelah terhubung ke host Pusat Data Bitbucket, Cloud Build akan membuat secret webhook atas nama Anda. Anda dapat melihat dan mengelola secret di halaman Secret Manager.
gcloud
Buat secret webhook di Secret Manager dengan menjalankan perintah berikut, dengan WEBHOOK_SECRET adalah nama yang ingin Anda berikan ke secret webhook:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET --data-file=-
Jika Anda menyimpan secret dalam project Google Cloud yang berbeda dengan project yang ingin digunakan untuk membuat koneksi host, jalankan perintah berikut untuk memberikan akses project Anda ke agen layanan Cloud Build:
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ \ --role="roles/secretmanager.admin"
Dengan keterangan:
- PROJECT_ID adalah Google Cloud project ID Anda.
Sekarang Anda dapat melanjutkan untuk menghubungkan host Pusat Data Bitbucket ke Cloud Build.
Jalankan perintah berikut untuk membuat koneksi Pusat Data Bitbucket:
gcloud builds connections create bitbucket-data-center CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSION ``` Where:
- CONNECTION_NAME adalah nama koneksi Anda.
- HOST_URI adalah URI instance Pusat Data Bitbucket Anda.
- PROJECT_ID adalah Google Cloud project ID Anda.
- REGION adalah region untuk koneksi Anda.
- ADMIN_TOKEN adalah nama token Anda dengan cakupan admin repositori.
- READ_TOKEN adalah nama token Anda dengan cakupan baca repositori.
- SECRET_VERSION adalah versi secret Anda.
- WEBHOOK_SECRET adalah rahasia webhook Anda.
Terraform
Anda dapat menghubungkan host Pusat Data Bitbucket ke Cloud Build menggunakan Terraform.
Dalam contoh berikut, cuplikan kode melakukan hal berikut:
- Mengonfigurasi penyedia Google Terraform.
- Membuat secret Secret Manager untuk menyimpan token Bitbucket.
- Memberikan izin yang diperlukan kepada agen layanan Cloud Build untuk mengakses secret.
Membuat koneksi Pusat Data Bitbucket.
// Configure the Terraform Google provider terraform { required_providers { google = {} } } provider "google" { project = "PROJECT_ID" region = "REGION" } // Create secrets and grant permissions to the Cloud Build service agent resource "google_secret_manager_secret" "admin-token-secret" { project = "PROJECT_ID" secret_id = "ADMIN_TOKEN_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "admin-token-secret-version" { secret = google_secret_manager_secret.admin-token-secret.id secret_data = "ADMIN_TOKEN_VALUE" } resource "google_secret_manager_secret" "read-token-secret" { project = "PROJECT_ID" secret_id = "READ_TOKEN_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "read-token-secret-version" { secret = google_secret_manager_secret.read-token-secret.id secret_data = "READ_TOKEN_VALUE" } resource "google_secret_manager_secret" "webhook-secret-secret" { project = "PROJECT_ID" secret_id = "WEBHOOK_SECRET_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "webhook-secret-secret-version" { secret = google_secret_manager_secret.webhook-secret-secret.id secret_data = "WEBHOOK_SECRET_VALUE" } data "google_iam_policy" "p4sa-secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"] } } resource "google_secret_manager_secret_iam_policy" "policy-pak" { project = google_secret_manager_secret.admin-token-secret.project secret_id = google_secret_manager_secret.admin-token-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-rpak" { project = google_secret_manager_secret.read-token-secret.project secret_id = google_secret_manager_secret.read-token-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-whs" { project = google_secret_manager_secret.webhook-secret-secret.project secret_id = google_secret_manager_secret.webhook-secret-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } // Create the connection resource resource "google_cloudbuildv2_connection" "my-connection" { project = "PROJECT_ID" location = "REGION" name = "CONNECTION_NAME" bitbucket_data_center_config { host_uri = "BITBUCKET_URI" authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.admin-token-secret-version.id } read_authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.read-token-secret-version.id } webhook_secret_secret_version = google_secret_manager_secret_version.webhook-secret-secret-version.id } depends_on = [ google_secret_manager_secret_iam_policy.policy-pak, google_secret_manager_secret_iam_policy.policy-rpak, google_secret_manager_secret_iam_policy.policy-whs ] }
Dengan keterangan:
- PROJECT_ID adalah Google Cloud project ID Anda.
- PROJECT_NUMBER adalah nomor project Google Cloud Anda.
- ADMIN_TOKEN_NAME adalah nama token Anda dengan cakupan
repository:admin
. - ADMIN_TOKEN_VALUE adalah nilai ADMIN_TOKEN_NAME Anda.
- READ_TOKEN_NAME adalah nama token Anda dengan cakupan
repository:read
. - READ_TOKEN_VALUE adalah nilai READ_TOKEN_NAME Anda.
- WEBHOOK_SECRET_NAME adalah nama secret webhook Anda.
- WEBHOOK_SECRET_VALUE adalah nilai WEBHOOK_SECRET_NAME Anda.
- REGION adalah region untuk koneksi Anda.
- CONNECTION_NAME adalah nama koneksi Anda.
- BITBUCKET_URI adalah URI instance Pusat Data Bitbucket Anda.
Langkah selanjutnya
- Pelajari cara menghubungkan repositori Pusat Data Bitbucket.
- Pelajari cara melakukan deployment blue/green di Compute Engine.