Cloud Build יכול לשלוח לכם התראות לערוצים נבחרים כדי לעדכן אתכם לגבי סטטוס הבנייה. בנוסף למנגנוני ההתראה שמתוחזקים על ידי Cloud Build, כמו Slack או SMTP, אפשר גם להשתמש בספרייה שמופיעה במאגר cloud-build-notifiers כדי ליצור מנגנון התראה משלכם.
בדף הזה נסביר איך ליצור כלי משלכם לשליחת התראות.
לפני שמתחילים
מפעילים את Cloud Build, Cloud Run, Pub/Sub ו-Secret Manager APIs.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
מתקינים את שפת התכנות Go.
מתקינים את Google Cloud CLI.
מתבצעת ההגדרה של
פותחים חלון טרמינל במחשב.
משכפלים את מאגר cloud-build-notifiers ועוברים אליו:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiersמוסיפים ספרייה לתוכנת ההתראה שלכם ועוברים אליה, כאשר DIRECTORY_NAME הוא שם הספרייה:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAMEמפעילים מודולים של Go בספרייה החדשה, כאשר DIRECTORY_NAME הוא שם הספרייה החדשה:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAMEעכשיו אמור להופיע קובץ
go.modבספרייה.כדי לוודא שאתם משתמשים בגרסה העדכנית של notifiers, מוסיפים את השורה הבאה לקובץ
go.mod:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
ההגדרות של התלות מוכנות, ואפשר ליצור כלי משלכם לשליחת התראות.
יצירת כלי משלכם לשליחת התראות
הספרייה cloud-build-notifiers מכילה את הספרייה lib/notifiers. בספרייה lib/notifiers יופיע קובץ בשם notifier.go. הקובץ הזה מכיל את המסגרת שבה אפשר להשתמש כדי ליצור כלי משלכם לשליחת התראות.
כדי ליצור הודעה בקובץ הראשי, צריך להגדיר שתי שיטות.
בספרייה החדשה, יוצרים קובץ בשם
main.go.ב-
main.go, מייבאים את מסגרת הספרייה של רכיבי ההתראה וכל פריט אחר בקשרי תלות:מגדירים שיטה ראשית לשליחת ההתראות. בדוגמה הזו,
loggerהוא השם של כלי ההתראה:השיטה
mainמשתמשת בשיטהmainשמוגדרת בקובץnotifier.go, שמשמש להגדרת קובצי הפעלה של הודעות.Mainמגדירים מבנה (struct) עבור רכיב ההתראה, שבו מגדירים את המשתנים של הממשק. בדוגמה הזו,
loggerהוא השם של כלי ההתראה:הוספת פונקציונליות של התראות. ממשק ההתראות מוגדר על ידי שתי שיטות:
-
SetUp: השיטהSetUpמקבלת הגדרה, מאחזרת סודות, שולפת מסננים ספציפיים מההגדרה ומאחסנת אותם כפרדיקט של Common Expression Language (שפת ביטויים נפוצה) שאפשר להשתמש בו כדי לשלוח התראות. מידע נוסף על CEL זמין במאגרcel-spec.
SendNotification: השיטהSendNotificationהיא השיטה שמשמשת לשליחת התראות לערוץ או לשירות שבחרתם.ההגדרה של כלי ההתראות זמינה ב-
notifier.goובתיעוד של Go.בדוגמה הבאה, ממשק ההתראות מוגדר באמצעות השיטה
SetUpוהשיטהSendNotificationלהדפסת יומני בנייה, כאשרloggerהוא שם ההתראה:קובץ ה-
main.goהסופי צריך להיות דומה לקובץ הבא. בדוגמה הזו,loggerמשמש כשם של הכלי לשליחת התראות.
בשלב הבא, מגדירים את כלי ההתראה.
-
הגדרת התראות
כותבים קובץ הגדרות של כלי ההתראה כדי להגדיר את כלי ההתראה ולסנן אירועים של בנייה:
בקובץ ההגדרות הבא של כלי ההתראה, השדה
filterמשתמש ב-CEL עם המשתנה הזמיןbuildכדי לסנן אירועי build עם סטטוסSUCCESS:כאשר:
-
logging-sampleהוא השם של הכלי לשליחת התראות.
במאמר בנושא משאבי Build מפורטים שדות נוספים שאפשר לסנן לפיהם. דוגמאות נוספות לסינון זמינות במאמר שימוש ב-CEL לסינון אירועי בנייה.
-
מעלים את קובץ התצורה של כלי ההתראות לקטגוריה של Cloud Storage:
אם אין לכם קטגוריה של Cloud Storage, מריצים את הפקודה הבאה כדי ליצור קטגוריה, כאשר BUCKET_NAME הוא השם שרוצים לתת לקטגוריה, בכפוף לדרישות למתן שמות.
gcloud storage buckets create gs://BUCKET_NAME/מעלים את קובץ ההגדרות של כלי ההתראות לקטגוריה:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAMEכאשר:
-
BUCKET_NAMEהוא שם הקטגוריה. -
CONFIG_FILE_NAMEהוא השם של קובץ ההגדרות.
-
יוצרים ומפעילים את כלי ההתראה:
יוצרים קובץ Dockerfile בשביל
logging-sample:יוצרים את כלי ההתראה ומציבים אותו באמצעות קובץ
cloudbuild.yamlהבא.כאשר:
-
_CONFIG_PATHהוא הנתיב להגדרת ההתראות, כמוgs://BUCKET_NAME/CONFIG_FILE_NAME.yaml.
-
כדי להריץ את
cloudbuild.yaml, מעבירים את נתיב ההתראה כמשתנה חלופי.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAMEנותנים הרשאות Pub/Sub ליצירת טוקנים לאימות בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorכאשר:
-
PROJECT_IDהוא מזהה הפרויקט. Google Cloud -
PROJECT_NUMBERהוא מספר הפרויקט שלכם ב- Google Cloud .
-
יוצרים חשבון שירות שייצג את הזהות של המינוי ל-Pub/Sub:
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"אפשר להשתמש ב-
cloud-run-pubsub-invokerאו בשם ייחודי בתוך הפרויקט Google Cloud .נותנים לחשבון השירות
cloud-run-pubsub-invokerאת ההרשאהInvokerשל Cloud Run:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invokerכאשר:
-
SERVICE_NAMEהוא השם של שירות Cloud Run שבו פורסים את האימג'. -
PROJECT_IDהוא מזהה הפרויקט. Google Cloud
-
יוצרים את הנושא
cloud-buildsכדי לקבל הודעות עדכון לגבי הגרסה של כלי ההתראות:gcloud pubsub topics create cloud-buildsאפשר גם להגדיר שם נושא מותאם אישית בקובץ תצורת ה-build כדי שההודעות יישלחו לנושא המותאם אישית במקום זאת. במקרה כזה, יוצרים נושא עם אותו שם נושא מותאם אישית:
gcloud pubsub topics create topic-nameמידע נוסף זמין במאמר בנושא נושאי Pub/Sub להתראות על בנייה.
יוצרים מנוי Pub/Sub מסוג push עבור כלי ההתראה:
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כאשר:
-
subscriber-idהוא השם שרוצים לתת למינוי. -
service-urlהיא כתובת ה-URL שנוצרה על ידי Cloud Run לשירות החדש. -
project-idהוא מזהה הפרויקט. Google Cloud
-
ההתראות על הפרויקט שלכם ב-Cloud Build מוגדרות עכשיו. בפעם הבאה שתפעילו בנייה, תקבלו התראה בערוץ אם הבנייה תתאים למסנן שהגדרתם.
התראות בדיקה
כדי לבדוק את ההתראות בדוגמה שמופיעה במדריך הזה, אפשר להפעיל את תהליך הבנייה באמצעות הפקודה gcloud builds submit.
בדוגמה הבאה, מציינים את success.yaml כנתיב ההגדרה. הפעלת הפקודה הזו אמורה להניב בנייה מינימלית מוצלחת. אפשר גם לראות את הפלט של יומני הבנייה.
gcloud builds submit --no-source --config=success.yaml
כאשר success.yaml הוא:
steps:
- name: busybox
args: ["true"]
בדוגמה הבאה, מציינים את failure.yaml כנתיב ההגדרה. הרצת הפקודה הזו אמורה להוביל ל-build שנכשל. במקום לראות פלט של יומני הבנייה, תראו פלט שמציין שלא הייתה התאמה למסנני ה-CEL שציינתם במקור.
gcloud builds submit --no-source --config=failure.yaml
כאשר failure.yaml הוא:
steps:
- name: busybox
args: ["false"]
אם יצרתם כלי להודעות שהוגדר לבצע משימה אחרת מלבד רישום פלט ביומני שירות של Cloud Run, אתם יכולים גם להריץ את הפקודה gcloud builds submit כדי לבדוק את ההתראות.
כדי לבדוק שגיאות שקשורות לבנייה, צריך לעיין ביומנים של Cloud Run בשביל השירות. מידע נוסף זמין במאמר בנושא צפייה ביומנים ב-Cloud Run.