Cloud Build memungkinkan Anda membuat pemicu di instance GitHub Enterprise. Halaman ini menjelaskan cara menggunakan pemicu GitHub Enterprise untuk memanggil build sebagai respons terhadap commit atau permintaan pull dari instance GitHub Enterprise dan menjelaskan cara membangun repositori dari GitHub Enterprise jika instance Anda dihosting di jaringan pribadi.
Sebelum memulai
Aktifkan Cloud Build dan Service Directory API, jika belum diaktifkan.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.
- Jika Anda belum membuat pool pribadi, ikuti petunjuk di bagian Membuat dan mengelola pool pribadi untuk membuat pool pribadi. Anda memerlukan pool pribadi untuk membangun di jaringan pribadi.
Membangun repositori dari GitHub Enterprise di jaringan pribadi
Selesaikan langkah-langkah berikut untuk menghubungkan instance GitHub Enterprise Anda ke Cloud Build dari jaringan pribadi:
Berikan akses Direktori Layanan ke agen layanan Cloud Build:
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \ --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \ --role="roles/servicedirectory.viewer"Ganti kode berikut:
- PROJECT_ID adalah project ID Cloud Build Anda.
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY adalah ID projectGoogle Cloud Anda yang berisi Direktori Layanan.
Berikan akses resource jaringan VPC ke agen layanan Cloud Build:
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \ --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \ --role="roles/servicedirectory.pscAuthorizedService"Ganti kode berikut:
- PROJECT_ID adalah project ID Cloud Build Anda.
- PROJECT_ID_CONTAINING_NETWORK_RESOURCE adalah ID projectGoogle Cloud Anda yang berisi resource jaringan.
Siapkan layanan Direktori Layanan dengan menyelesaikan langkah-langkah berikut:
Konfigurasikan namespace untuk layanan Anda:
gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORYGanti kode berikut:
- NAMESPACE adalah nama namespace Direktori Layanan Anda.
- LOCATION adalah region tempat Anda membuat koneksi dan menautkan repositori.
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY adalah ID projectGoogle Cloud yang berisi Direktori Layanan Anda.
Konfigurasikan layanan untuk namespace Anda:
gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATIONGanti kode berikut:
- SERVICE adalah nama resource Direktori Layanan Anda.
- NAMESPACE adalah nama namespace Direktori Layanan Anda.
- LOCATION adalah region tempat Anda membuat koneksi dan menautkan repositori.
Konfigurasikan endpoint untuk layanan Anda:
gcloud service-directory endpoints create ENDPOINT_NAME \ --namespace=NAMESPACE \ --service=SERVICE \ --location=LOCATION \ --address=INSTANCE_IP_ADDRESS \ --port=PORT \ --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/global/networks/NETWORKGanti kode berikut:
- ENDPOINT_NAME adalah nama endpoint Anda.
- NAMESPACE adalah nama namespace Direktori Layanan Anda.
- SERVICE adalah nama resource Direktori Layanan Anda.
- LOCATION adalah region tempat Anda membuat koneksi dan menautkan repositori.
- INSTANCE_IP_ADDRESS adalah alamat IP instance GitHub Enterprise di jaringan Anda. Contoh,
123.45.67.89. Untuk mempelajari lebih lanjut, lihat Menggunakan Direktori Layanan untuk menjangkau host di luar Google Cloud. - PORT adalah nama port Anda untuk HTTPS.
- PROJECT_ID_CONTAINING_NETWORK adalah project ID Google Cloud yang berisi jaringan VPC Anda.
- NETWORK adalah nama jaringan VPC Anda.
Sekarang Anda dapat menggunakan resource layanan (
projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) untuk membuat koneksi pada langkah-langkah berikut.Buat pemicu GitHub Enterprise untuk membangun repositori yang dihosting di instance GitHub Enterprise Anda.
Menggunakan Direktori Layanan untuk menjangkau host di luar Google Cloud
Direktori Layanan menggunakan rentang alamat IP 35.199.192.0/19 untuk menghubungkan host Anda di luar Google Cloud. Anda harus menambahkan rentang ini ke
daftar yang diizinkan di firewall Anda. Selain itu, jaringan pribadi Anda harus dikonfigurasi untuk merutekan rentang ini melalui koneksi Cloud VPN atau Cloud Interconnect.
Jika koneksi Anda menggunakan Cloud Router, Anda dapat mengonfigurasi koneksi untuk mengomunikasikan rentang ke jaringan pribadi Anda.
Untuk mempelajari lebih lanjut, lihat Mengonfigurasi akses jaringan pribadi.
Menggunakan Cloud Load Balancing untuk menjangkau host di luar Google Cloud
Jika konfigurasi jaringan Anda tidak memungkinkan Anda merutekan
rentang alamat IP Direktori Layanan 35.199.192.0/19 ke
Cloud VPN atau Cloud Interconnect, Anda dapat
membuat load balancer menggunakan
Cloud Load Balancing yang mengarahkan traffic ke host Anda.
Saat membuat endpoint Direktori Layanan, pastikan untuk menggunakan alamat IP aturan penerusan load balancer, bukan alamat IP host Anda. Anda dapat menggunakan load balancer HTTPS internal atau load balancer transmission control protocol (TCP) internal saat membuat endpoint.
Saat membuat load balancer TCP, pertimbangkan hal berikut:
- Hanya grup endpoint jaringan (NEG) konektivitas hybrid yang diperlukan untuk menjangkau host Anda.
- Load balancer TCP tidak memerlukan kunci pribadi yang tidak dienkripsi untuk sertifikat SSL Anda.
- Penyiapan Cloud VPN Anda harus menggunakan Cloud Router dengan perutean dinamis global. Jika Cloud VPN Anda menggunakan perutean statis, Anda dapat menggunakan proxy yang menggunakan Cloud Service Mesh. Untuk mempelajari lebih lanjut, lihat Menyiapkan layanan edge jaringan untuk deployment hybrid.
Untuk mempelajari lebih lanjut cara membuat load balancer HTTPS, lihat Menyiapkan Load Balancer Aplikasi internal dengan konektivitas hybrid. Untuk mempelajari lebih lanjut cara membuat load balancer TCP, lihat Menyiapkan Load Balancer Jaringan proxy internal regional dengan konektivitas hybrid.
Langkah berikutnya
- Pelajari cara membuat dan mengelola pemicu build.
- Pelajari cara melakukan blue-green deployment di Compute Engine.