Mengatur build berdasarkan kebijakan organisasi

Dengan Cloud Build, Anda dapat menentukan kebijakan organisasi (constraints/cloudbuild.allowedIntegrations) untuk mengontrol layanan eksternal mana yang dapat memanggil pemicu build. Misalnya, jika pemicu Anda memproses perubahan pada repositori GitHub dan GitHub ditolak dalam kebijakan organisasi, pemicu Anda tidak akan berjalan. Anda dapat menentukan berapa pun nilai yang diizinkan atau ditolak untuk organisasi atau project Anda.

Halaman ini menjelaskan cara menyiapkan kebijakan organisasi (constraints/cloudbuild.allowedIntegrations) untuk integrasi menggunakan Konsol Google Cloud dan alat command line gcloud.

Sebelum Memulai

  • Aktifkan API Cloud Build and Organization Policy.

    Mengaktifkan API

  • Untuk menggunakan contoh command line dalam panduan ini, instal dan konfigurasi Google Cloud SDK.

  • Untuk menetapkan, mengubah, atau menghapus kebijakan organisasi, Anda harus memiliki peran Organization Policy Administrator (roles/orgpolicy.policyAdmin). Untuk mempelajari cara menambahkan peran ke akun Anda, lihat Menambahkan administrator kebijakan organisasi.

Menyiapkan kebijakan organisasi untuk integrasi yang diizinkan

Bagian ini menjelaskan cara menyiapkan kebijakan organisasi (constraints/cloudbuild.allowedIntegrations) guna menentukan build untuk integrasi yang diizinkan.

Konsol

  1. Buka halaman Organization policies di Konsol Google Cloud.

    Buka halaman Kebijakan organisasi

  2. Klik baris yang berisi kebijakan Integrasi yang Diizinkan (Cloud Build).

    Anda akan melihat halaman Detail kebijakan.

  3. Untuk mengedit kebijakan, klik Edit.

    Anda akan melihat halaman Edit kebijakan.

  4. Di bagian Berlaku untuk, pilih Customize untuk menyetel definisi kebijakan Anda.

  5. Di bagian Penerapan kebijakan, pilih Ganti untuk menentukan aturan Anda sendiri untuk kebijakan tersebut. Jika tidak, pilih Merge with parent untuk memastikan aturan di resource induk diterapkan ke setelan Anda. Untuk mempelajari lebih lanjut, lihat Memahami evaluasi hierarki.

  6. Di bagian Aturan, klik Tambahkan aturan untuk menambahkan aturan baru untuk kebijakan Anda.

  7. Di bagian Policy values, pilih Allow all untuk mengizinkan build dari semua layanan, pilih Deny all untuk menolak build dari semua layanan, atau pilih Custom untuk mengizinkan atau menolak build dari layanan tertentu.

    Jika Anda memilih Custom sebagai nilai, selesaikan langkah-langkah berikut:

    1. Di bagian Jenis kebijakan, pilih Izinkan atau Tolak.

    2. Di bagian Custom values, masukkan URL host instance atau repositori yang ingin Anda izinkan atau tolak build-nya. Misalnya, untuk mengizinkan atau menolak build dari GitHub, masukkan URL sebagai github.com atau www.github.com.

      Anda juga dapat memasukkan beberapa URL yang dipisahkan oleh spasi. Contoh, github.com ghe.staging-test.com

      Berdasarkan peristiwa tersebut, URL host yang Anda tentukan adalah salah satu dari berikut:

      • Acara RepoSync: Host adalah source.developers.google.com.
      • Peristiwa aplikasi GitHub: Host berasal dari kolom repository.html_url dalam payload JSON, yang selalu github.com.
      • Peristiwa GitHub Enterprise: Host berasal dari kolom repository.html_url dalam payload JSON Anda. Contoh, ghe.staging-test.com.
      • Peristiwa Pub/Sub: Host berasal dari sumber yang ditentukan dalam pemicu Anda. Jika tidak ada sumber yang ditentukan dalam pemicu Anda, berarti tidak ada pemeriksaan kebijakan organisasi.
      • Peristiwa webhook: Host berasal dari sumber yang ditentukan dalam pemicu Anda. Jika tidak ada sumber yang ditentukan dalam pemicu Anda, ada pemeriksaan kebijakan organisasi.
  8. Untuk menyimpan aturan, klik Selesai.

  9. Untuk menambahkan aturan lain, klik Tambahkan aturan. Atau, untuk menyimpan kebijakan, klik Save.

gcloud

  1. Buka jendela terminal.

  2. Jika Anda ingin mengizinkan atau menolak build dari semua layanan, buat file YAML dengan konten berikut:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - ALLOW_OR_DENY: true
    

    Dengan keterangan:

    • PROJECT_NUMBER adalah nomor project Anda.
    • INHERIT adalah true jika Anda ingin aturan kebijakan Anda diwarisi dari resource induk. Atau, false.
    • ALLOW_OR_DENY adalah allowAll jika Anda ingin mengizinkan build dari semua URL host. Jika tidak, denyAll.
    • HOST_URL adalah URL host Anda. Misalnya, github.com. Anda juga dapat menentukan URL tambahan di baris berikut.

    Jika Anda ingin mengizinkan atau menolak build dari layanan yang dipilih, buat file YAML dengan konten berikut:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - values:
            ALLOW_OR_DENY:
              HOST_URL
              ...
    

    Dengan keterangan:

    • PROJECT_NUMBER adalah nomor project Anda.
    • INHERIT adalah true jika Anda ingin aturan kebijakan Anda diwarisi dari resource induk. Atau, false.
    • ALLOW_OR_DENY adalah allowedValues jika Anda ingin menentukan URL host yang akan mengizinkan build. Atau, deniedValues.
    • HOST_URL adalah URL host Anda. Misalnya, github.com. Anda juga dapat menentukan URL tambahan di baris berikut.
  3. Tetapkan kebijakan organisasi Anda dengan menjalankan perintah berikut, dengan FILE_NAME sebagai nama file YAML Anda:

     gcloud org-policies set-policy FILE_NAME
    
  4. Untuk mengonfirmasi bahwa kebijakan Anda telah ditetapkan, jalankan perintah berikut, dengan PROJECT_ID sebagai project ID Anda:

     gcloud org-policies describe cloudbuild.allowedIntegrations --effective --project PROJECT_ID
    

Menguji kebijakan organisasi untuk integrasi yang diizinkan

Bagian ini menjelaskan cara menguji kebijakan organisasi (constraints/cloudbuild.allowedIntegrations) menggunakan pemicu build.

  1. Jika Anda belum melakukannya, buat pemicu build.

  2. Kirim perubahan ke sumber Anda.

  3. Jika kebijakan disetel untuk mengizinkan build dari sumber, Anda akan dapat melihat eksekusi build dari pemicu di halaman Histori build. Jika tidak, build Anda tidak akan dijalankan. Untuk melihat histori build yang dibatasi oleh definisi kebijakan, lihat halaman Logs Explorer untuk mengetahui alasan payload JSON dan alasan penolakan.

Langkah selanjutnya