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 atausource.repos.updateProjectConfig
pada project yang ditentukaniam.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 |
---|---|
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.