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 guna mengontrol cara pengguna berinteraksi dengan peristiwa Pub/Sub yang dihasilkan repositori Anda.

Halaman ini menyediakan ringkasan 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 menjadi seluruh project Google Cloud atau repositori individual.

Setelah dikonfigurasi, Cloud Source Repositories memublikasikan pesan ke topik Pub/Sub yang ditentukan menggunakan akun layanan Anda. Anda harus memberikan izin akun layanan terlebih dahulu untuk memublikasikan ke topik. Jika Anda 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 peristiwa. Jika project ditentukan, semua repositori dalam project tersebut akan dipantau.
  • Topik Pub/Sub tempat Cloud Source Repositories memublikasikan pesan.
  • Akun layanan untuk mengakses topik Pub/Sub.
  • Format pesan (seperti JSON atau Protocol Buffers).

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

  • source.repos.updateRepo di repositori yang ditentukan atau source.repos.updateProjectConfig di project yang ditentukan
  • iam.serviceAccounts.actAs di 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 definisi 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 untuk menggunakan salah satu dari dua format untuk notifikasi:

  • JSON
  • Buffering protokol

Data notifikasi

Setiap notifikasi Pub/Sub berisi informasi berikut tentang peristiwa:

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

Jika notifikasi ditujukan 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 berikut tentang perintah git push:

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.

Jenis update

Peristiwa git push dapat memiliki salah satu dari empat jenis pembaruan. 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 topik dalam project yang berbeda. Dalam hal ini, Anda harus membuat akun layanan dalam project yang sama dengan 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 di topik di project lain.