Membangun repositori dari GitHub Enterprise di jaringan pribadi

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 mem-build repositori dari GitHub Enterprise jika instance Anda dihosting di jaringan pribadi.

Sebelum memulai

  • Aktifkan API Cloud Build and Service Directory.

    Mengaktifkan API

  • Jika Anda belum membuat kumpulan pribadi, ikuti petunjuk di bagian Membuat dan mengelola kumpulan pribadi untuk membuat kumpulan pribadi. Anda memerlukan kumpulan pribadi untuk membuat build 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:

  1. 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."
    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 project Google Cloud Anda yang berisi Direktori Layanan.
  2. 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."
    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 project Google Cloud Anda yang berisi resource jaringan.
  3. Siapkan layanan Direktori Layanan dengan menyelesaikan langkah-langkah berikut:

    1. Konfigurasikan namespace untuk layanan Anda:

       gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
      

      Ganti 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 project Google Cloud Anda yang berisi Direktori Layanan.
    2. Konfigurasikan layanan untuk namespace Anda:

       gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
      

      Ganti 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.
    3. 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/us-central1/ networks/NETWORK
      

      Ganti 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 Service Directory untuk menjangkau host di luar Google Cloud.
      • PORT adalah nama port Anda untuk HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK adalah project ID Google Cloud Anda yang berisi jaringan VPC.
      • NETWORK adalah nama jaringan VPC Anda.

    Anda sekarang dapat menggunakan resource layanan (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) untuk membuat koneksi dalam langkah-langkah berikut.

  4. Hubungkan host GitHub Enterprise.

  5. Menghubungkan repositori GitHub Enterprise.

  6. Buat pemicu GitHub Enterprise untuk mem-build repositori yang dihosting di instance GitHub Enterprise Anda.

Menggunakan Direktori Layanan untuk menjangkau host di luar Google Cloud

Service Directory 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. Selain itu, jaringan pribadi Anda perlu dikonfigurasi untuk merutekan rentang ini melalui koneksi Cloud VPN atau Cloud Interconnect.

Jika koneksi Anda menggunakan Cloud Router, Anda dapat mengonfigurasi koneksi untuk berkomunikasi dengan 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 campuran 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 tepi jaringan untuk deployment hibrida.

Untuk mempelajari lebih lanjut cara membuat load balancer HTTPS, lihat Menyiapkan Load Balancer Aplikasi internal dengan konektivitas campuran. Untuk mempelajari lebih lanjut cara membuat load balancer TCP, lihat Menyiapkan Load Balancer Jaringan proxy internal regional dengan konektivitas campuran.

Langkah berikutnya