Cloud Build dapat memberi tahu Anda tentang pembaruan status build dengan mengirimkan notifikasi ke channel yang dipilih. Selain pemberi notifikasi yang dikelola oleh Cloud Build seperti Slack atau SMTP, Anda juga dapat menggunakan library yang disediakan di repositori cloud-build-notifiers untuk membuat pemberi notifikasi Anda sendiri.
Halaman ini menjelaskan cara membuat pemberi notifikasi Anda sendiri.
Sebelum memulai
Aktifkan Cloud Build, Cloud Run, Pub/Sub, dan Secret Manager API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.
Instal bahasa pemrograman Go.
Instal Google Cloud CLI.
Menyiapkan
Buka jendela terminal di mesin Anda.
Clone dan buka repositori cloud-build-notifiers:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiersTambahkan direktori untuk pemberi notifikasi Anda sendiri dan buka direktori tersebut, dengan DIRECTORY_NAME adalah nama direktori Anda:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAMELakukan inisialisasi modul go di direktori baru Anda, dengan DIRECTORY_NAME adalah nama direktori baru Anda:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAMEAnda akan melihat file
go.moddi direktori Anda.Tambahkan baris berikut ke file
go.modAnda untuk memastikan Anda menggunakan versi pemberi notifikasi terbaru:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Dependensi Anda kini telah disiapkan dan Anda siap membuat pemberi notifikasi Anda sendiri.
Membuat pemberi notifikasi Anda sendiri
cloud-build-notifiers berisi direktori lib/notifiers. Di direktori lib/notifiers, Anda akan melihat file bernama notifier.go. File ini berisi framework yang dapat Anda gunakan untuk membuat pemberi notifikasi Anda sendiri.
Anda harus menentukan dua metode untuk membuat pemberi notifikasi di file utama Anda.
Di direktori baru, buat file bernama
main.go.Di
main.go, impor framework library pemberi notifikasi dan dependensi lainnya:Tentukan metode utama untuk pemberi notifikasi Anda. Dalam contoh ini,
loggeradalah nama pemberi notifikasi:Metode
mainmenggunakan metodeMainyang ditentukan dalam filenotifier.go, yang digunakan untuk menyiapkan biner pemberi notifikasi.Tentukan struct untuk pemberi notifikasi Anda, tempat Anda akan menentukan variabel untuk antarmuka Anda. Dalam contoh ini,
loggeradalah nama pemberi notifikasi:Tambahkan fungsi pemberi notifikasi. Antarmuka pemberi notifikasi ditentukan oleh dua metode:
SetUp: MetodeSetUpmenerima konfigurasi, mengambil secret, dan menarik filter yang ditentukan dari konfigurasi serta menyimpannya sebagai predikat Common Expression Language yang dapat digunakan untuk mengirim notifikasi. Untuk mempelajari CEL lebih lanjut, lihat repositoricel-spec.SendNotification: MetodeSendNotificationadalah metode yang digunakan untuk mengirim notifikasi ke channel atau layanan yang Anda pilih.Definisi pemberi notifikasi tersedia di
notifier.godan di dokumentasi Go.Dalam contoh berikut, antarmuka pemberi notifikasi ditentukan menggunakan metode
SetUpdanSendNotificationuntuk mencetak log build, denganloggersebagai nama pemberi notifikasi Anda:File
main.goakhir Anda akan terlihat mirip dengan file berikut. Dalam contoh ini,loggerdigunakan sebagai nama pemberi notifikasi.
Selanjutnya, konfigurasi pemberi notifikasi Anda.
Mengonfigurasi notifikasi
Tulis file konfigurasi pemberi notifikasi untuk mengonfigurasi pemberi notifikasi Anda dan memfilter peristiwa build:
Dalam contoh file konfigurasi pemberi notifikasi berikut, kolom
filtermenggunakan CEL dengan variabel yang tersedia,build, untuk memfilter peristiwa build dengan statusSUCCESS:Dengan:
logging-sampleadalah nama pemberi notifikasi.
Untuk mengetahui kolom tambahan yang dapat Anda gunakan untuk memfilter, lihat resource Build. Untuk mengetahui contoh pemfilteran tambahan, lihat Menggunakan CEL untuk memfilter peristiwa build.
Upload file konfigurasi pemberi notifikasi Anda ke bucket Cloud Storage:
Jika Anda tidak memiliki bucket Cloud Storage, jalankan perintah berikut untuk membuat bucket, dengan BUCKET_NAME adalah nama yang ingin Anda berikan ke bucket Anda, yang tunduk pada persyaratan penamaan.
gcloud storage buckets create gs://BUCKET_NAME/Upload file konfigurasi pemberi notifikasi ke bucket Anda:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAMEDengan:
BUCKET_NAMEadalah nama bucket Anda.CONFIG_FILE_NAMEadalah nama file konfigurasi Anda.
Buat dan deploy pemberi notifikasi Anda:
Buat Dockerfile untuk
logging-sample:Buat dan deploy pemberi notifikasi menggunakan file
cloudbuild.yamlberikut.Dengan:
_CONFIG_PATHadalah jalur ke konfigurasi pemberi notifikasi Anda, sepertigs://BUCKET_NAME/CONFIG_FILE_NAME.yaml.
Untuk menjalankan
cloudbuild.yaml, teruskan jalur pemberi notifikasi sebagai variabel pengganti.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAMEBerikan izin Pub/Sub untuk membuat token autentikasi di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorDengan:
PROJECT_IDadalah ID projectAnda. Google CloudPROJECT_NUMBERadalah nomor projectAnda. Google Cloud
Buat akun layanan untuk merepresentasikan identitas langganan Pub/Sub Anda:
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"Anda dapat menggunakan
cloud-run-pubsub-invokeratau menggunakan nama yang unik dalam project Google Cloud Anda.Berikan izin
InvokerCloud Run ke akun layanancloud-run-pubsub-invoker:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invokerDengan:
SERVICE_NAMEadalah nama layanan Cloud Run tempat Anda men-deploy image.PROJECT_IDadalah ID projectAnda. Google Cloud
Buat topik
cloud-buildsuntuk menerima pesan update build untuk pemberi notifikasi Anda:gcloud pubsub topics create cloud-buildsAnda juga dapat menentukan nama topik kustom dalam file konfigurasi build sehingga pesan dikirim ke topik kustom. Dalam hal ini, Anda akan membuat topik dengan nama topik kustom yang sama:
gcloud pubsub topics create topic-nameUntuk mengetahui informasi selengkapnya, lihat topik Pub/Sub untuk notifikasi build.
Buat pelanggan push Pub/Sub untuk pemberi notifikasi Anda:
gcloud pubsub subscriptions create subscriber-id \ --topic=cloud-builds \ --push-endpoint=service-url \ --push-auth-service-account=cloud-run-pubsub-invoker@project-id.iam.gserviceaccount.comDengan:
subscriber-idadalah nama yang ingin Anda berikan ke langganan Anda.service-urladalah URL yang dibuat Cloud Run untuk layanan baru Anda.project-idadalah ID projectAnda. Google Cloud
Notifikasi untuk project Cloud Build Anda kini telah disiapkan. Saat Anda memanggil build berikutnya, Anda akan menerima notifikasi di channel Anda jika build cocok dengan filter yang telah Anda konfigurasi.
Notifikasi pengujian
Untuk menguji notifikasi untuk contoh yang digunakan dalam panduan ini, Anda dapat memanggil build dengan menjalankan perintah gcloud builds submit.
Dalam contoh berikut, kita menentukan success.yaml sebagai jalur konfigurasi. Menjalankan perintah ini akan menghasilkan build minimal yang berhasil. Anda juga akan dapat melihat output log build Anda.
gcloud builds submit --no-source --config=success.yaml
Dengan success.yaml adalah:
steps:
- name: busybox
args: ["true"]
Dalam contoh berikut, kita menentukan failure.yaml sebagai jalur konfigurasi. Menjalankan perintah ini akan menghasilkan build yang gagal. Daripada melihat output log build Anda, Anda akan melihat output yang memberi tahu Anda bahwa tidak ada kecocokan untuk filter CEL yang Anda tentukan di sumber Anda.
gcloud builds submit --no-source --config=failure.yaml
Dengan failure.yaml adalah:
steps:
- name: busybox
args: ["false"]
Jika Anda membuat pemberi notifikasi yang dikonfigurasi untuk melakukan tugas lain selain output logging ke log layanan Cloud Run, Anda juga dapat menjalankan perintah gcloud builds submit untuk menguji notifikasi Anda.
Untuk memeriksa error yang terkait dengan build Anda, periksa log Cloud Run untuk layanan Anda. Untuk mempelajari lebih lanjut, lihat
Melihat log di Cloud Run.
Langkah berikutnya
- Pelajari tentang pemberi notifikasi Cloud Build.
- Pelajari cara berlangganan notifikasi build.