Cloud Build dapat memberi tahu Anda tentang pembaruan status build dengan mengirim notifikasi ke saluran yang diinginkan. Selain pemberitahuan yang dikelola oleh Cloud Build seperti Slack atau SMTP, Anda juga dapat menggunakan library yang disediakan di repositori cloud-build-notifiers untuk membuat pemberitahuan Anda sendiri.
Halaman ini menjelaskan cara membuat notifikasi Anda sendiri.
Sebelum memulai
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
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-notifiers
Tambahkan direktori untuk notifikasi Anda sendiri dan buka direktori tersebut, dengan DIRECTORY_NAME adalah nama direktori Anda:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAME
Lakukan inisialisasi modul go di direktori baru, dengan DIRECTORY_NAME adalah nama direktori baru Anda:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAME
Sekarang Anda akan melihat file
go.mod
di direktori.Tambahkan baris berikut ke file
go.mod
Anda untuk memastikan Anda menggunakan notifikasi versi terbaru:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Dependensi Anda kini telah disiapkan dan Anda siap membuat notifikasi sendiri.
Membuat pemberi notifikasi 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 notifikasi dan dependensi lainnya:Tentukan metode utama untuk notifikasi Anda. Dalam contoh ini,
logger
adalah nama notifikasi:Metode
main
menggunakan metodeMain
yang ditentukan dalam filenotifier.go
, yang digunakan untuk menyiapkan biner notifikasi.Tentukan struct untuk notifikasi, tempat Anda akan menentukan variabel untuk antarmuka. Dalam contoh ini,
logger
adalah nama notifikasi. Misalnya,
Selanjutnya, Anda akan menambahkan fungsi notifikasi. Antarmuka notifikasi ditentukan oleh dua metode:
SetUp
: MetodeSetUp
menerima konfigurasi, mengambil secret, dan menarik filter yang ditentukan dari konfigurasi dan menyimpannya sebagai prediket Common Expression Language yang dapat digunakan untuk mengirim notifikasi. Untuk mempelajari CEL lebih lanjut, lihat repositoricel-spec
.SendNotification
: MetodeSendNotification
adalah metode yang digunakan untuk mengirim notifikasi ke saluran atau layanan yang Anda inginkan.Definisi notifikasi tersedia di
notifier.go
dan di dokumentasi Go.Pada contoh di bawah, antarmuka notifikasi ditentukan menggunakan metode
SetUp
danSendNotification
untuk mencetak log build, denganlogger
sebagai nama notifikasi Anda:File
main.go
akhir Anda akan terlihat seperti file berikut. Dalam contoh ini,logger
digunakan sebagai nama notifikasi.Setelah menentukan notifikasi, Anda dapat mengikuti langkah-langkah berikut untuk mengonfigurasi notifikasi.
Mengonfigurasi notifikasi
Tulis file konfigurasi notifikasi untuk mengonfigurasi notifikasi dan memfilter peristiwa build:
Pada contoh file konfigurasi notifikasi berikut, kolom
filter
menggunakan CEL dengan variabel yang tersedia,build
, untuk memfilter peristiwa build dengan statusSUCCESS
:Dengan keterangan:
logging-sample
adalah nama notifikasi.
Untuk 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 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_NAME
Dengan keterangan:
BUCKET_NAME
adalah nama bucket Anda.CONFIG_FILE_NAME
adalah nama file konfigurasi Anda.
Build dan deploy pemberitahuan Anda:
Buat Dockerfile untuk
logging-sample
:Build dan deploy pemberitahuan menggunakan file
cloudbuild.yaml
berikut.Dengan keterangan:
_CONFIG_PATH
adalah jalur ke konfigurasi notifikasi Anda, sepertigs://BUCKET_NAME/CONFIG_FILE_NAME.yaml
.
Untuk menjalankan
cloudbuild.yaml
, teruskan jalur pemberitahuan sebagai variabel penggantian.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAME
Berikan 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.serviceAccountTokenCreator
Dengan keterangan:
PROJECT_ID
adalah ID project Google Cloud Anda.PROJECT_NUMBER
adalah 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-invoker
atau menggunakan nama yang unik dalam project Google Cloud Anda.Berikan izin
Invoker
Cloud 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.invoker
Dengan keterangan:
SERVICE_NAME
adalah nama layanan Cloud Run tempat Anda men-deploy gambar.PROJECT_ID
adalah ID project Google Cloud Anda.
Buat topik
cloud-builds
untuk menerima pesan update build untuk notifikasi Anda:gcloud pubsub topics create cloud-builds
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.com
Dengan keterangan:
subscriber-id
adalah nama yang ingin Anda berikan ke langganan.service-url
adalah URL yang dibuat Cloud Run untuk layanan baru Anda.project-id
adalah 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 fungsi notifikasi untuk contoh yang digunakan dalam panduan ini, Anda dapat
memanggil build dengan menjalankan perintah gcloud builds submit
.
Pada 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.
gcloud builds submit --no-source --config=success.yaml
Dengan success.yaml
adalah:
steps:
- name: busybox
args: ["true"]
Pada contoh berikut, kita menentukan failure.yaml
sebagai jalur
konfigurasi. Menjalankan perintah ini akan menyebabkan build gagal. Anda akan melihat output yang menginformasikan bahwa tidak ada kecocokan untuk filter CEL yang Anda tentukan di sumber, bukan melihat output log build.
gcloud builds submit --no-source --config=failure.yaml
Dengan failure.yaml
adalah:
steps:
- name: busybox
args: ["false"]
Jika 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 fungsi
notifikasi. Untuk memeriksa error yang terkait dengan build, periksa log Cloud Run untuk layanan Anda. Untuk mempelajari lebih lanjut, lihat Melihat log di Cloud Run.
Langkah selanjutnya
- Pelajari notifikasi Cloud Build.
- Pelajari cara berlangganan notifikasi build.