Menghubungkan ke host Bitbucket Server

Halaman ini menjelaskan cara menghubungkan ke host Bitbucket Server ke Cloud Build.

Sebelum memulai

  • Enable the Cloud Build, Secret Manager, and Compute Engine APIs.

    Enable the APIs

Menyiapkan

Sebelum menghubungkan host Bitbucket Server, Anda harus mendapatkan kunci API untuk mengautentikasi dan menerima peristiwa masuk dari Bitbucket Server. Selain itu, Anda harus memberikan izin IAM di project Google Cloud Anda untuk membuat token akses pribadi di Bitbucket Server untuk membuat webhook dan mengambil data repositori.

Mendapatkan kunci API

Untuk menghubungkan host dan mengautentikasi peristiwa webhook masuk, Anda memerlukan kunci API.

Untuk mendapatkan kunci API:

  1. Buka halaman Credentials di Konsol Google Cloud:

    Buka halaman Credentials

  2. Klik Buat kredensial.

  3. Klik Kunci API.

    Anda akan melihat dialog berisi kunci API yang telah dibuat. Catat kunci API Anda.

  4. Jika Anda ingin membatasi kunci untuk aplikasi produk, klik Restrict key untuk menyelesaikan langkah-langkah tambahan guna mengamankan kunci. Jika tidak, klik Tutup.

    Untuk mempelajari cara membatasi kunci Anda, lihat Menerapkan pembatasan kunci API.

Izin IAM yang diperlukan

Untuk menghubungkan host Bitbucket Server, berikan peran Cloud Build Editor (roles/cloudbuild.builds.editor) dan peran Cloud Build Integrations Owner (cloudbuild.integrations.owner) ke akun pengguna Anda.

Untuk menambahkan peran yang diperlukan ke akun pengguna Anda, lihat Mengonfigurasi akses ke resource Cloud Build. Untuk mempelajari lebih lanjut peran IAM yang terkait dengan Cloud Build, lihat Peran dan izin IAM.

Membuat token akses pribadi

Anda harus membuat dua token akses pribadi di Bitbucket Server untuk melakukan tugas berikut:

Token akses pribadi ini adalah izin minimum yang diperlukan. Anda mungkin perlu mengonfigurasi izin tambahan di Bitbucket Server sesuai kebutuhan. Misalnya, Anda dapat memilih akun Bitbucket Server agar hanya memiliki akses ke subset repositori di instance Bitbucket Server Anda untuk memberikan kontrol yang lebih terperinci atas apa yang tersedia di Cloud Build.

Setelah Anda membuat token akses pribadi, simpan nilai token Anda dengan aman untuk terhubung ke repositori Bitbucket Server Anda.

Menghubungkan ke host Server Bitbucket

Konsol

Untuk menghubungkan host Bitbucket Server ke Cloud Build menggunakan Google Cloud Console:

  1. Buka halaman Repositories di Konsol Google Cloud:

    Buka halaman Repositori

  2. Di bagian atas halaman, pilih tab generasi ke-1.

  3. Klik Connect Host.

  4. Pilih Bitbucket Server dari menu drop-down.

    Anda akan melihat panel Connect host.

    Masukkan informasi berikut untuk menghubungkan instance Server Bitbucket ke Cloud Build:

    • Region: Pilih region untuk koneksi Anda.

    • Nama: Masukkan nama untuk koneksi Anda.

    1. URL host: URL host instance Bitbucket Server Anda. Misalnya, https://bbs.example-test.com:7990.

    2. Kunci Google Cloud API: Kunci API yang digunakan untuk mengautentikasi kredensial Anda.

    3. Sertifikat CA: Sertifikat yang ditandatangani sendiri oleh Anda. Ukuran sertifikat Anda tidak boleh melebihi 10 KB dan harus dalam format PEM (.pem, .cer,atau .crt). Jika bagian ini dibiarkan kosong, kumpulan sertifikat default akan digunakan.

    4. Username: Nama pengguna akun Bitbucket Server Anda. Akun ini harus memiliki akses admin ke repositori yang ingin dihubungkan dengan Cloud Build.

    5. Token akses baca: Token akses pribadi akun Bitbucket Server Anda dengan izin baca.

    6. Token akses admin: Token akses pribadi akun Bitbucket Server Anda dengan izin admin pada project dan repositori.

    7. Di bagian Network type, pilih salah satu opsi berikut:

      1. Internet publik: Pilih opsi ini jika instance Anda dapat diakses melalui internet publik.

      2. Jaringan pribadi: Pilih opsi ini jika instance Anda dihosting di jaringan pribadi.

        1. Project: Pilih project ID Google Cloud Anda.

        2. Jaringan: Pilih jaringan dari menu drop-down. Jika Anda belum membuat jaringan, lihat Membuat dan mengelola jaringan VPC untuk mempelajari cara membuat jaringan.

        3. IP range: Masukkan rentang IP internal yang dapat ditetapkan ke VM dalam rentang yang dialokasikan untuk jaringan yang di-peering.

          Anda dapat menentukan rentangnya menggunakan notasi pemilihan rute Classless Inter-Domain Routing (CIDR) dalam format STARTING_IP/SUBNET_PREFIX_SIZE. Misalnya, 192.0.2.0/24 memiliki panjang awalan 24. 24 bit pertama rentang IP digunakan sebagai subnet mask (192.0.2.0) sedangkan kemungkinan alamat host berkisar dari 192.0.2.0 hingga 192.0.2.255.

          Nilai panjang awalan Anda tidak boleh lebih dari /29. Jika tidak ada nilai yang ditentukan untuk rentang tersebut, nilai default /24 akan otomatis ditetapkan. Jika tidak ada nilai yang ditentukan untuk panjang awalan, alamat IP akan otomatis ditetapkan dalam jaringan VPC yang di-peering. Jika tidak ada nilai yang ditentukan untuk alamat IP, alamat IP akan otomatis ditetapkan ke rentang dalam jaringan VPC yang di-peering.

  5. Klik Connect Host.

    Jika instance Server Bitbucket Anda berada di jaringan yang di-peering, proses menghubungkan host Anda mungkin memerlukan waktu beberapa menit.

    Anda akan dialihkan ke panel Connect Repository.

    Setelah membuat koneksi host, token akses pribadi dan rahasia webhook Anda akan disimpan dengan aman di Secret Manager. Anda dapat melihat dan mengelola secret di halaman Secret Manager.

gcloud

Untuk menghubungkan host Bitbucket Server ke Cloud Build menggunakan perintah gcloud, Anda harus menjalankan perintah gcloud alpha builds enterprise-config bitbucketserver create di terminal Anda. Tidak seperti menghubungkan host menggunakan Google Cloud Console, Anda harus menyimpan token akses pribadi dan rahasia webhook secara manual di Secret Manager sebelum menjalankan perintah berikut:

gcloud alpha builds enterprise-config bitbucketserver create
    --name=BITBUCKET_SERVER_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

Dengan keterangan:

  • BITBUCKET_SERVER_CONFIG_NAME adalah nama konfigurasi Server Bitbucket Anda.
  • USERNAME adalah nama pengguna Bitbucket Server Anda.
  • HOST_URI adalah URI host instance Server Bitbucket Anda.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION adalah nama resource token akses admin yang disimpan di Secret Manager. Format yang diharapkan untuk secret yang disimpan di Secret Manager adalah projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Anda dapat menentukan latest sebagai versi untuk menggunakan versi terbaru secret Anda. Hal ini berlaku untuk setiap resource yang disimpan di Secret Manager.
  • READ_ACCESS_TOKEN_SECRET_VERSION adalah nama resource token akses baca Anda yang disimpan di Secret Manager.
  • WEBHOOK_SECRET_SECRET_VERSION adalah nama resource rahasia webhook Anda yang disimpan di Secret Manager.
  • API_KEY adalah kunci Google Cloud API.
  • [Opsional] PEERED_NETWORK adalah jaringan VPC yang terhubung ke instance Bitbucket Server Anda secara lokal. Untuk mempelajari lebih lanjut, lihat Membuat repositori dari Server Bitbucket di jaringan pribadi.

  • [Opsional] PEERED_NETWORK_IP_RANGE adalah rentang IP internal yang dapat ditetapkan ke VM dalam rentang yang dialokasikan untuk jaringan yang di-peering.

  • SSL_CA_FILE adalah jalur ke file lokal yang berisi sertifikat SSL Anda yang akan digunakan untuk permintaan ke Bitbucket Server. Sertifikat harus dalam format PEM.

API

Untuk menghubungkan host Server Bitbucket ke Cloud Build menggunakan API, gunakan template JSON berikut. Tidak seperti menghubungkan host menggunakan Google Cloud Console, Anda perlu menyimpan token akses pribadi dan rahasia webhook secara manual di Secret Manager sebelum memanggil 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"
  }

Dengan keterangan:

  • HOST_URI adalah URI host instance Server Bitbucket Anda.
  • USERNAME adalah nama pengguna Bitbucket Server Anda.
  • API_KEY adalah kunci Google Cloud API.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION adalah nama resource token akses admin yang disimpan di Secret Manager. Anda mungkin perlu memberikan peran Secret Manager ke akun layanan Cloud Build Anda, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Untuk mempelajari lebih lanjut, lihat Memberikan peran Secret Manager ke akun layanan.

  • READ_ACCESS_TOKEN_SECRET_VERSION adalah nama resource token akses baca Anda yang disimpan di Secret Manager.

  • WEBHOOK_SECRET_SECRET_VERSION adalah nama resource rahasia webhook Anda yang disimpan di Secret Manager.

  • [Opsional] PEERED_NETWORK adalah jaringan VPC yang akan di-peering untuk instance Bitbucket Server Anda secara lokal.

    Anda dapat menentukan rentang menggunakan notasi pemilihan rute Classless Inter-Domain Routing (CIDR) dalam format STARTING_IP/SUBNET_PREFIX_SIZE. Misalnya, 192.0.2.0/24 memiliki panjang awalan 24. 24 bit pertama rentang IP digunakan sebagai subnet mask (192.0.2.0) sedangkan kemungkinan alamat host berrentang dari 192.0.2.0 hingga 192.0.2.225.

  • [Opsional] PEERED_NETWORK_IP_RANGE adalah rentang IP internal yang dapat ditetapkan ke VM dalam rentang yang dialokasikan untuk jaringan yang di-peering.

  • [Opsional] SSL_CERTIFICATE adalah sertifikat SSL yang digunakan untuk instance Bitbucket Server lokal.

Masukkan perintah curl berikut di terminal Anda:

  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/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json

Dengan keterangan:

  • PROJECT_NUMBER adalah nomor project Cloud Anda.
  • PROJECT_ID adalah project ID Cloud Anda.
  • REGION adalah region yang terkait dengan konfigurasi Bitbucket Server Anda.
  • BITBUCKET_SERVER_CONFIG_NAME adalah nama konfigurasi Server Bitbucket Anda.

Jika berhasil, isi respons memuat instance Operation yang baru dibuat.

Masukkan perintah curl berikut di terminal Anda:

  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

Dengan keterangan:

  • PROJECT_NUMBER adalah nomor project Cloud Anda.
  • PROJECT_ID adalah project ID Cloud Anda.
  • REGION adalah region yang terkait dengan konfigurasi Bitbucket Server Anda.
  • OPERATION_ID adalah ID operasi pembuatan konfigurasi Bitbucket Server Anda.

Anda mungkin perlu terus menjalankan perintah GetOperation API hingga respons berisi done: true, yang menunjukkan operasi selesai. Jika konfigurasi Bitbucket Server berhasil dibuat, Anda dapat melihat konfigurasinya di kolom response.value. Jika tidak, lihat kolom error untuk laporan error mendetail.

Langkah selanjutnya