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