Cloud Build יכול לשלוח לכם התראות לערוצים נבחרים כדי לעדכן אתכם לגבי סטטוס הבנייה. בנוסף למנגנוני התראה שמתוחזקים על ידי Cloud Build, כמו Slack או SMTP, אפשר גם להשתמש בספרייה שמופיעה במאגר cloud-build-notifiers כדי ליצור מנגנון התראה משלכם.
בדף הזה מוסבר איך ליצור כלי משלכם לשליחת התראות.
לפני שמתחילים
מפעילים את Cloud Build, Cloud Run, Pub/Sub ו-Secret Manager APIs, אם אחד מהם עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
מתקינים את שפת התכנות 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בספרייה.כדי לוודא שאתם משתמשים בגרסה העדכנית של כלי ההתראה, מוסיפים את השורה הבאה לקובץ
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, שמשמש להגדרת קובצי הפעלה של הודעות.מגדירים מבנה (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=SUB_IDENTITY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
כאשר:
+ SUBSCRIBER_ID הוא השם שרוצים לתת למינוי.
+ SERVICE_URL היא כתובת ה-URL שנוצרה על ידי Cloud Run לשירות החדש.
+ PROJECT_ID הוא מזהה הפרויקט. Google Cloud
Note: By default, [subscriptions expire after 31 days of inactivity](/pubsub/docs/subscription-overview#lifecycle).
You can adjust or disable the expiration period by including the
[`--expiration-period` flag](/sdk/gcloud/reference/pubsub/subscriptions/create#--expiration-period)
when creating the subscription.
ההתראות לפרויקט 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.