Notifikasi untuk Cloud Source Repositories

Cloud Source Repositories memublikasikan pesan tentang repositori Anda ke resource bernama yang disebut topik. Aplikasi yang berlangganan topik Pub/Sub dapat menerima pesan ini. Misalnya, saat status repositori berubah, Anda dapat menerima pemberitahuan. Selain itu, Anda dapat mengonfigurasi peran dan izin untuk topik Pub/Sub untuk mengontrol cara pengguna berinteraksi dengan peristiwa Pub/Sub yang dihasilkan repositori Anda.

Halaman ini menyediakan ringkasan tentang notifikasi Pub/Sub untuk Cloud Source Repositories. Untuk mempelajari cara menyiapkan dan menggunakan notifikasi Pub/Sub, lihat Mengonfigurasi notifikasi Pub/Sub.

Cakupan

Anda dapat mengonfigurasi Cloud Source Repositories untuk memublikasikan peristiwa ke topik Pub/Sub. Anda dapat menetapkan cakupan konfigurasi ini untuk menjadi seluruh project Google Cloud Anda atau repositori individual.

Setelah dikonfigurasi, Cloud Source Repositories akan memublikasikan pesan ke topik Pub/Sub yang ditentukan menggunakan akun layanan Anda. Anda harus terlebih dahulu memberikan izin kepada akun layanan untuk memublikasikan ke topik. Jika Anda telah mengaktifkan logging audit untuk Pub/Sub, akun layanan ini akan ditampilkan sebagai pemanggil Pub/Sub API.

Izin

Mengonfigurasi Cloud Source Repositories untuk memublikasikan pesan memerlukan hal berikut:

  • Project atau repositori yang dipantau untuk melihat peristiwa. Jika sebuah project ditentukan, semua repositori dalam project tersebut akan diawasi.
  • Topik Pub/Sub tempat Cloud Source Repositories memublikasikan pesan.
  • Akun layanan untuk mengakses topik Pub/Sub.
  • Format pesan (seperti JSON atau Buffering Protokol).

Saat mengonfigurasi Cloud Source Repositories untuk Pub/Sub, Anda harus memiliki izin berikut:

  • source.repos.updateRepo pada repositori yang ditentukan atau source.repos.updateProjectConfig pada project yang ditentukan
  • iam.serviceAccounts.actAs pada akun layanan yang ditentukan

Setelah topik Pub/Sub didaftarkan, akun layanan yang ditentukan harus memiliki izin pubsub.topics.publish untuk memublikasikan pesan.

Jenis peristiwa

Pub/Sub dapat memberi tahu Anda saat pengguna membuat repositori, menghapus repositori, atau mengirim commit ke repositori. Setiap peristiwa adalah jenis peristiwa tertentu. Tabel berikut mencantumkan jenis dan definisinya yang sesuai.

Jenis peristiwa Deskripsi
CreateRepo Terjadi saat pengguna membuat repositori.
RefUpdate Terjadi saat pengguna menjalankan perintah git push.
DeleteRepo Terjadi saat pengguna menghapus repositori.

Format notifikasi

Anda dapat mengonfigurasi Pub/Sub agar menggunakan salah satu dari dua format untuk notifikasi:

  • JSON
  • Buffering protokol

Data notifikasi

Setiap notifikasi Pub/Sub berisi informasi berikut tentang suatu peristiwa:

Nama kolom Deskripsi
name Nama repositori.
url URL repositori.
eventTime Waktu saat perubahan terjadi.
refUpdateEvent Informasi tentang perubahan spesifik ini.
createRepoEvent Menunjukkan apakah pengguna membuat repositori.
deleteRepoEvent Menunjukkan apakah pengguna menghapus repositori.

Jika notifikasi tersebut untuk perintah git push, notifikasi yang berisi kolom refUpdateEvent akan berisi informasi berikut:

Nama kolom Deskripsi
email Alamat email pengguna yang melakukan perubahan.
refUpdates Informasi tentang commit.

Kolom refUpdates berisi detail perintah git push berikut:

Nama kolom Deskripsi
refName Nama cabang.
updateType Jenis update. Untuk mengetahui informasi selengkapnya, lihat Jenis update.
oldId ID commit sebelumnya untuk repositori.
newId ID baru untuk repositori.

Memperbarui jenis

Peristiwa git push dapat memiliki salah satu dari empat jenis update. Anda dapat menemukan jenisnya di kolom updateType notifikasi.

Mengupdate jenis Deskripsi
BUAT Terjadi saat perintah membuat referensi baru.
UPDATE_FAST_FORWARD Terjadi saat perintah memperbarui objek.
UPDATE_NON_FAST_FORWARD Terjadi saat perintah menggunakan flag -f, seperti git push -f.
HAPUS Terjadi saat perintah menghapus referensi.

Contoh notifikasi

Berikut adalah contoh data yang terdapat dalam notifikasi Pub/Sub. Notifikasi ini menggunakan format JSON.

  {
    "name": "projects/test-project/repos/pubsub-test",
    "url": "[URL_PATH]",
    "eventTime": "2018-02-21T21:23:25.566175Z",
    "refUpdateEvent": {
      "email": "someone@somecompany.com",
      "refUpdates": {
        "refs/heads/master": {
          "refName": "refs/heads/master",
          "updateType": "UPDATE_FAST_FORWARD",
          "oldId": "c7a28dd5de3403cc384a025834c9fce2886fe763",
          "newId": "f00768887da8de62061210295914a0a8a2a38226"
        }
      }
    }
  }

Contoh penyiapan lintas project

Anda dapat mengonfigurasi Cloud Source Repositories untuk memublikasikan pesan ke suatu topik dalam project yang berbeda. Dalam hal ini, Anda harus membuat akun layanan dalam project yang sama tempat repositori Anda berada. Dalam project yang berisi topik Pub/Sub, berikan peran roles/pubsub.publisher ke akun layanan ini. Saat Anda mengonfigurasi Cloud Source Repositories dengan akun ini dan topik Pub/Sub ini, pesan peristiwa untuk repositori Anda akan muncul dalam topik di project lain.