Cloud Build dapat memberi tahu Anda tentang update status build dengan mengirimkan notifikasi ke saluran yang dipilih. Selain notifikasi yang dikelola oleh Cloud Build seperti Slack atau SMTP, Anda juga dapat menggunakan library yang disediakan di repositori cloud-build-notifiers untuk membuat notifikasi Anda sendiri.
Halaman ini menjelaskan cara membuat notifikasi Anda sendiri.
Sebelum memulai
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Instal bahasa pemrograman Go.
Instal Google Cloud CLI.
Menyiapkan
Buka jendela terminal di perangkat Anda.
Clone dan buka repositori cloud-build-notifiers:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiersTambahkan direktori untuk 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_NAMESekarang Anda akan melihat file
go.moddi direktori Anda.Tambahkan baris berikut ke file
go.modAnda untuk memastikan Anda menggunakan versi terbaru notifikasi:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Dependensi Anda kini sudah disiapkan dan Anda siap membuat notifikasi 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 notifikasi Anda sendiri.
Anda harus menentukan dua metode untuk membuat notifikasi di file utama.
Di direktori baru, buat file bernama
main.go.Di
main.go, impor framework library notifiers dan dependensi lainnya:Tentukan metode utama untuk notifikasi Anda. Dalam contoh ini,
loggeradalah nama notifikasi:Metode
mainmenggunakan metodeMainyang ditentukan dalam filenotifier.go, yang digunakan untuk menyiapkan biner notifikasi.Tentukan struct untuk notifikasi Anda, tempat Anda akan menentukan variabel untuk antarmuka Anda. Dalam contoh ini,
loggeradalah nama notifikasi:Tambahkan fungsi notifikasi. Antarmuka notifikasi ditentukan oleh dua metode:
SetUp: MetodeSetUpmenerima konfigurasi, mengambil secret, dan menarik filter tertentu dari konfigurasi serta menyimpannya sebagai predikat Common Expression Language yang dapat digunakan untuk mengirim notifikasi. Untuk mempelajari CEL lebih lanjut, lihat repositoricel-spec.SendNotification: MetodeSendNotificationdigunakan untuk mengirim notifikasi ke saluran atau layanan yang Anda pilih.Definisi notifikasi tersedia di
notifier.godan di dokumentasi Go.Dalam contoh berikut, antarmuka notifikasi ditentukan menggunakan metode
SetUpdanSendNotificationuntuk mencetak log build, denganloggersebagai nama notifikasi Anda:File
main.goakhir Anda akan terlihat seperti file berikut. Dalam contoh ini,loggerdigunakan sebagai nama notifikasi.
Selanjutnya, konfigurasi notifikasi Anda.
Mengonfigurasi notifikasi
Tulis file konfigurasi notifikasi untuk mengonfigurasi notifikasi dan memfilter peristiwa build:
Dalam file konfigurasi notifikasi contoh berikut, kolom
filtermenggunakan CEL dengan variabel yang tersedia,build, untuk memfilter peristiwa build dengan statusSUCCESS:Dengan:
logging-sampleadalah nama notifikasi.
Untuk mengetahui kolom tambahan yang dapat Anda gunakan untuk memfilter, lihat resource Build. Untuk contoh pemfilteran tambahan, lihat Menggunakan CEL untuk memfilter peristiwa build.
Upload file konfigurasi 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 untuk bucket, tunduk pada persyaratan penamaan.
gcloud storage buckets create gs://BUCKET_NAME/Upload file konfigurasi 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.
Bangun dan deploy pemberi notifikasi Anda:
Buat Dockerfile untuk
logging-sample:Bangun dan deploy notifikasi menggunakan file
cloudbuild.yamlberikut.Dengan:
_CONFIG_PATHadalah jalur ke konfigurasi notifikasi Anda, sepertigs://BUCKET_NAME/CONFIG_FILE_NAME.yaml.
Untuk menjalankan
cloudbuild.yaml, teruskan jalur notifikasi sebagai variabel pengganti.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAMEBeri Pub/Sub izin 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 project Google Cloud Anda.PROJECT_NUMBERadalah nomor project Google Cloud Anda.
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.Beri akun layanan
cloud-run-pubsub-invokerizin Cloud RunInvoker: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 project Google Cloud Anda.
Buat topik
cloud-buildsuntuk menerima pesan update build untuk notifikasi Anda:gcloud pubsub topics create cloud-buildsAnda juga dapat menentukan nama topik kustom dalam file konfigurasi build sehingga pesan dikirim ke topik kustom tersebut. 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 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 pada langganan.service-urladalah URL yang dibuat Cloud Run untuk layanan baru Anda.project-idadalah ID project Google Cloud Anda.
Notifikasi untuk project Cloud Build Anda kini telah disiapkan. Saat berikutnya Anda memanggil build, Anda akan menerima notifikasi di channel jika build cocok dengan filter yang telah Anda konfigurasi.
Notifikasi pengujian
Untuk menguji notifikasi untuk contoh yang digunakan dalam panduan ini, Anda dapat
memulai build dengan menjalankan perintah gcloud builds submit.
Dalam contoh berikut, kita menentukan success.yaml sebagai jalur
konfigurasi. Menjalankan perintah ini akan menghasilkan build yang berhasil secara minimal. 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 akan melihat output yang memberi tahu Anda bahwa tidak ada kecocokan untuk filter CEL yang Anda tentukan di sumber.
gcloud builds submit --no-source --config=failure.yaml
Dengan failure.yaml adalah:
steps:
- name: busybox
args: ["false"]
Jika Anda membuat notifikasi yang dikonfigurasi untuk melakukan tugas lain selain mencatat output ke log layanan Cloud Run, Anda juga dapat menjalankan perintah gcloud builds submit untuk menguji notifikasi.
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 notifikasi Cloud Build.
- Pelajari cara berlangganan notifikasi build.