הגדרת אוטומציה להתראות

אתם יכולים להגדיר את Cloud Build כך שישלח לכם התראות על גרסאות build ל-Slack, ל-Google Chat, לשרת SMTP, לנקודת קצה (endpoint) ב-HTTP או למכונה של BigQuery באמצעות שירותי ההתראות של Cloud Build. בדף הזה מוסבר איך להפוך את תהליך ההגדרה של המדווח הרצוי לאוטומטי.

הגדרה אוטומטית של התראות

ב-Cloud Build יש סקריפט הגדרות שמאפשר להגדיר התראות באופן אוטומטי. כדי להגדיר התראות באמצעות סקריפט ההגדרות:

Slack

מתבצעת ההגדרה של

בקטעים הבאים מתוארים השלבים שצריך להשלים לפני שמגדירים התראות באופן אוטומטי לשירות ההתראות.

הפעלת ממשקי API

מפעילים את ממשקי ה-API של Cloud Build,‏ Compute Engine,‏ Cloud Run,‏ Pub/Sub ו-Secret Manager, אם הם עדיין לא מופעלים.

התפקידים שנדרשים כדי להפעיל ממשקי API

כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

הפעלת ממשקי ה-API

קבלת פרטי כניסה ואחסון שלהם

  1. יוצרים אפליקציית Slack לסביבת העבודה ב-Slack שאליה רוצים לשלוח התראות.

  2. מפעילים webhooks נכנסים כדי לפרסם הודעות מ-Cloud Build ב-Slack.

  3. עוברים לאפליקציית Slack כדי לאתר את כתובת ה-URL של ה-webhook הנכנס. כתובת ה-URL תיראה בערך כך:

    http://hooks.slack.com/services/...
    
  4. שומרים את כתובת ה-URL של ה-webhook הנכנס ב-Secret Manager:

    1. פותחים את הדף Secret Manager במסוף Google Cloud :

      פותחים את הדף Secret Manager.

    2. לוחצים על Create secret.

    3. נותנים שם לסוד.

    4. בקטע ערך סודי, מוסיפים את כתובת ה-URL של ה-webhook הנכנס לאפליקציית Slack.

    5. כדי לשמור את הסוד, לוחצים על Create secret.

כתיבת קובץ תצורה של התראות

כותבים קובץ תצורה של שירות התראות כדי להגדיר את שירות ההתראות של Slack ולסנן אירועי build:

בקובץ התצורה הבא של השולח, השדה filter משתמש בCommon Expression Language עם המשתנה הזמין, build, כדי לסנן אירועי build עם סטטוס SUCCESS:

  apiVersion: cloud-build-notifiers/v1
  kind: SlackNotifier
  metadata:
    name: example-slack-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
      template:
        type: golang
        uri: gs://bucket-name/slack.json
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

כאשר:

  • ‫webhook-url הוא משתנה התצורה שמשמש בדוגמה הזו כדי להפנות לנתיב של כתובת ה-URL של ה-webhook של Slack שמאוחסן ב-Secret Manager. שם המשתנה שמציינים כאן צריך להיות זהה לשדה name בקטע secrets.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובץ התבנית. אם הקטגוריה לא קיימת, סקריפט ההגדרות יוצר אותה בפרויקט ומאמת את הבעלות על הקטגוריה לפני העלאת הקבצים.
  • ‫project-id הוא המזהה של הפרויקט ב- Google Cloud .
  • ‫secret-name הוא שם הסוד שמכיל את כתובת ה-webhook של Slack.
  • השדה uri מפנה לקובץ slack.json. הקובץ הזה מכיל תבנית JSON שמתארחת ב-Cloud Storage ומייצגת את הודעת ההתראה למרחב העבודה שלכם ב-Slack.

כדי לראות את הדוגמה, עיינו בקובץ התצורה של השולח לשליחת התראות ל-Slack.

הרצת הסקריפט של הפעולה האוטומטית

כדי להגדיר התראות באופן אוטומטי:

  1. משכפלים את המאגר cloud-build-notifiers.

  2. מגדירים את Google Cloud CLI עם מזהה הפרויקט והאזור:

    gcloud config set project project-id
    gcloud config set run/region region
    

    כאשר:

    • ‫project-id הוא מזהה הפרויקט ב- Google Cloud .
    • ‫region הוא האזור שבו פורסים את שירות ההתראות.
  3. מריצים את הפקודה הבאה בתיקיית הבסיס של המאגר:

    ./setup.sh slack config-path -b bucket-name -t template-path -s secret-name

כאשר:

  • ‫config-path הוא הנתיב לקובץ התצורה של מקבלי ההתראות.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובצי ההגדרות והתבניות. אם משמיטים את -b, הסקריפט יוצר שם קטגוריה עם סיומת אקראית (notifiers-config-random-suffix).
  • ‫template-path הוא הנתיב לקובץ התבנית של ההתראות. קובץ התבנית של השולחים מכיל את תבנית ה-JSON שמתארחת ב-Cloud Storage ומייצגת את הודעת ההתראה. אתם יכולים לכלול את קובץ התבנית של השולחים כנתיב באמצעות המשתנה הזה, או בשדה uri של קובץ התצורה של השולחים.
  • ‫secret-name הוא שם הסוד שמאוחסן ב-Secret Manager.

אחרי שמריצים את הסקריפט, מוצגת ההודעה הבאה:

** NOTIFIER SETUP COMPLETE **

ההתראות מוגדרות. אתם יכולים לראות את הסקריפט המלא במאגר cloud-build-notifiers או להריץ את ./setup.sh --help כדי לקבל הוראות לשימוש בסקריפט.

SMTP

מתבצעת ההגדרה של

בקטעים הבאים מתוארים השלבים שצריך להשלים לפני שמגדירים התראות באופן אוטומטי לשירות ההתראות.

הפעלת ממשקי API

מפעילים את ממשקי ה-API של Cloud Build,‏ Compute Engine,‏ Cloud Run,‏ Pub/Sub ו-Secret Manager, אם הם עדיין לא מופעלים.

התפקידים שנדרשים כדי להפעיל ממשקי API

כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

הפעלת ממשקי ה-API

אחסון פרטי כניסה

  1. שומרים את הסיסמה של חשבון האימייל של השולח ב-Secret Manager:

  2. פותחים את הדף Secret Manager במסוף Google Cloud :

    פותחים את הדף Secret Manager.

  3. לוחצים על Create secret.

  4. נותנים שם לסוד.

  5. בקטע Secret value, מוסיפים את הסיסמה לחשבון האימייל של השולח.

  6. כדי לשמור את הסוד, לוחצים על Create secret.

כתיבת קובץ תצורה של התראות

כותבים קובץ תצורה של התראות כדי להגדיר את התראות ה-SMTP ולסנן אירועי build:

בקובץ התצורה הבא של השולח, השדה filter משתמש בCommon Expression Language עם המשתנה הזמין, build, כדי לסנן אירועי build עם סטטוס SUCCESS:

 apiVersion: cloud-build-notifiers/v1
 kind: SMTPNotifier
 metadata:
   name: example-smtp-notifier
 spec:
   notification:
     filter: build.status == Build.Status.SUCCESS
     delivery:
       server: server-host-name
       port: "port"
       sender: sender-email
       from: from-email
       recipients:
         - recipient-email
         # optional: more emails here
       password:
         secretRef: smtp-password
      template:
        type: golang
        uri: gs://bucket-name/smtp.html
   secrets:
   - name: smtp-password
     value: projects/project-id/secrets/secret-name/versions/latest

כאשר:

  • ‫server-host-name היא הכתובת של שרת ה-SMTP.
  • ‫port היא היציאה שתטפל בבקשות SMTP. הערך הזה צריך להיות מוגדר כמחרוזת.
  • ‫sender-email היא כתובת האימייל של החשבון השולח שמוצגת ל-server-host-name שצוין.
  • from-email היא כתובת האימייל שמוצגת לנמענים.
  • ‫recipient-email היא רשימה של כתובת אימייל אחת או יותר לקבלת הודעות מהשולח.
  • ‫smtp-password הוא משתנה ההגדרה שמשמש בדוגמה הזו כדי להפנות לסיסמה של חשבון האימייל של השולח שמאוחסנת ב-Secret Manager. שם המשתנה שמציינים כאן צריך להיות זהה לשדה name בקטע secrets.
  • ‫project-id הוא המזהה של הפרויקט ב- Google Cloud .
  • ‫secret-name הוא שם הסוד שמכיל את הסיסמה לחשבון האימייל של השולח.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובץ התבנית. אם הקטגוריה לא קיימת, סקריפט ההגדרות יוצר אותה בפרויקט ומאמת את הבעלות על הקטגוריה לפני העלאת הקבצים.
  • השדה uri מפנה לקובץ smtp.html. הקובץ הזה מתייחס לתבנית HTML שמתארחת ב-Cloud Storage ומייצגת את ההתראה באימייל.

כדי לראות את הדוגמה, עיינו בקובץ התצורה של המודיע עבור המודיע של SMTP.

הרצת הסקריפט של הפעולה האוטומטית

כדי להגדיר התראות באופן אוטומטי:

  1. משכפלים את המאגר cloud-build-notifiers.

  2. מגדירים את Google Cloud CLI עם מזהה הפרויקט והאזור:

    gcloud config set project project-id
    gcloud config set run/region region
    

    כאשר:

    • ‫project-id הוא מזהה הפרויקט ב- Google Cloud .
    • ‫region הוא האזור שבו פורסים את שירות ההתראות.
  3. מריצים את הפקודה הבאה בתיקיית הבסיס של המאגר:

    ./setup.sh smtp config-path -b bucket-name -t template-path -s secret-name

כאשר:

  • ‫config-path הוא הנתיב לקובץ התצורה של מקבלי ההתראות.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובצי ההגדרות והתבניות. אם משמיטים את -b, הסקריפט יוצר שם קטגוריה עם סיומת אקראית (notifiers-config-random-suffix).
  • ‫template-path הוא הנתיב לקובץ התבנית של ההתראות. קובץ התבנית של השולחים מכיל את תבנית ה-JSON שמתארחת ב-Cloud Storage ומייצגת את הודעת ההתראה. אתם יכולים לכלול את קובץ התבנית של השולחים כנתיב באמצעות המשתנה הזה, או בשדה uri של קובץ התצורה של השולחים.
  • ‫secret-name הוא שם הסוד שמאוחסן ב-Secret Manager.

אחרי שמריצים את הסקריפט, מוצגת ההודעה הבאה:

** NOTIFIER SETUP COMPLETE **

ההתראות מוגדרות. אתם יכולים לראות את הסקריפט המלא במאגר cloud-build-notifiers או להריץ את ./setup.sh --help כדי לקבל הוראות לשימוש בסקריפט.

BigQuery

מתבצעת ההגדרה של

בקטעים הבאים מתוארים השלבים שצריך להשלים לפני שמגדירים התראות באופן אוטומטי לשירות ההתראות.

הפעלת ממשקי API

מפעילים את ממשקי ה-API של Cloud Build,‏ Cloud Run,‏ Pub/Sub ו-BigQuery, אם הם עדיין לא מופעלים.

התפקידים שנדרשים כדי להפעיל ממשקי API

כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

הפעלת ממשקי ה-API

מתן הרשאות

נותנים לחשבון השירות של Cloud Run הרשאה ליצור ולכתוב טבלאות ב-BigQuery, והרשאה לאחזר נתונים מ-Artifact Registry שקשורים ל-build:

  1. נכנסים לדף IAM במסוף Google Cloud :

    פתיחת הדף IAM

  2. מאתרים את חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine ומשויך לפרויקט:

    חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine ייראה בערך כך, כאשר project-number הוא מספר הפרויקט:

        project-number-compute@
    
  3. לוחצים על סמל העיפרון בשורה שבה מופיע חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.

    הכרטיסייה עריכת הרשאות הגישה תופיע.

    1. לוחצים על הוספת תפקיד.

    2. מוסיפים את התפקידים הבאים:

      • Artifact Registry Reader
      • עריכה של נתוני BigQuery

        התפקיד קורא ב-Artifact Registry מאפשר לאחזר נתונים של קובצי האימג'. התפקיד עריכת נתונים ב-BigQuery נותן לכם גישת קריאה וכתיבה לנתונים.

    3. לוחצים על Save.

כתיבת קובץ תצורה של התראות

כותבים קובץ תצורה של התראות כדי להגדיר את ההתראות של BigQuery ולסנן אירועי build:

בקובץ התצורה הבא של השולח, השדה filter משתמש בCommon Expression Language עם המשתנה build כדי לסנן אירועי build עם מזהה טריגר ספציפי:

 apiVersion: cloud-build-notifiers/v1
 kind: BigQueryNotifier
 metadata:
   name: example-bigquery-notifier
 spec:
   notification:
     filter: build.build_trigger_id == "123e4567-e89b-12d3-a456-426614174000"
     delivery:
       table: projects/project-id/datasets/dataset-name/tables/table-name
     template:
       type: golang
       uri: gs://bucket-name/bq.json

כאשר:

  • ‫project-id הוא המזהה של הפרויקט ב- Google Cloud .
  • ‫dataset-name הוא השם שרוצים לתת למערך הנתונים.
  • ‫table-name הוא השם שרוצים לתת לטבלה.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובץ התבנית. אם הקטגוריה לא קיימת, סקריפט ההגדרות יוצר אותה בפרויקט ומאמת את הבעלות על הקטגוריה לפני העלאת הקבצים.
  • השדה uri מפנה לקובץ bq.json. הקובץ הזה מתייחס לתבנית JSON שמתארחת ב-Cloud Storage ומייצגת את המידע שצריך להוסיף לטבלה ב-BigQuery.

הערך table-name בקובץ התצורה של ההתראות יכול להתייחס אל:

  • טבלה שלא קיימת
  • טבלה ריקה בלי סכימה
  • טבלה קיימת עם סכימה שתואמת למפרט הסכימה ב-BigQuery notifier

כדי לראות את הדוגמה, עיינו בקובץ התצורה של השירות לשליחת התראות של השירות לשליחת התראות של BigQuery.

הרצת הסקריפט של הפעולה האוטומטית

כדי להגדיר התראות באופן אוטומטי:

  1. משכפלים את המאגר cloud-build-notifiers.

  2. מגדירים את Google Cloud CLI עם מזהה הפרויקט והאזור:

    gcloud config set project project-id
    gcloud config set run/region region
    

    כאשר:

    • ‫project-id הוא מזהה הפרויקט ב- Google Cloud .
    • ‫region הוא האזור שבו פורסים את שירות ההתראות.
  3. מריצים את הפקודה הבאה בתיקיית הבסיס של המאגר:

     ./setup.sh bigquery config-path -b bucket-name -t template-path
    

    כאשר:

    • ‫config-path הוא הנתיב לקובץ התצורה של מקבלי ההתראות.
    • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובצי ההגדרות והתבניות. אם משמיטים את -b, הסקריפט יוצר שם קטגוריה עם סיומת אקראית (notifiers-config-random-suffix).
    • ‫template-path הוא הנתיב לקובץ התבנית של ההתראות. קובץ התבנית של השולחים מכיל את תבנית ה-JSON שמתארחת ב-Cloud Storage ומייצגת את הודעת ההתראה. אתם יכולים לכלול את קובץ התבנית של השולחים כנתיב באמצעות המשתנה הזה, או בשדה uri של קובץ התצורה של השולחים.

    אחרי שמריצים את הסקריפט, מוצגת ההודעה הבאה:

    ** NOTIFIER SETUP COMPLETE **
    

    ההתראות מוגדרות. אפשר לראות את הסקריפט המלא במאגר cloud-build-notifiers או להריץ את ./setup.sh --help כדי לקבל הוראות לשימוש בסקריפט.

HTTP

מתבצעת ההגדרה של

בקטעים הבאים מתוארים השלבים שצריך להשלים לפני שמגדירים התראות באופן אוטומטי לשירות ההתראות.

הפעלת ממשקי API

מפעילים את Cloud Build API,‏ Cloud Run API ו-Pub/Sub API, אם הם עדיין לא מופעלים.

התפקידים שנדרשים כדי להפעיל ממשקי API

כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

הפעלת ממשקי ה-API

כתיבת קובץ תצורה של התראות

כותבים קובץ תצורה של התראות כדי להגדיר את ההתראות ב-HTTP ולסנן אירועי build:

בקובץ התצורה הבא של השולח, השדה filter משתמש בCommon Expression Language עם המשתנה הזמין, build, כדי לסנן אירועי build עם סטטוס SUCCESS:

    apiVersion: cloud-build-notifiers/v1
    kind: HTTPNotifier
    metadata:
      name: example-http-notifier
    spec:
      notification:
        filter: build.status == Build.Status.SUCCESS
        delivery:
          # The `http(s)://` protocol prefix is required.
          url: url
        template:
          type: golang
          uri: gs://bucket-name/http.json

כאשר:

  • ‫url הוא משתנה התצורה שמשמש בדוגמה הזו כדי לציין את כתובת ה-URL של הבקשה.
  • ‫url היא כתובת ה-URL שרוצים לציין בתור שרת הנמען.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובץ התבנית. אם הקטגוריה לא קיימת, סקריפט ההגדרות יוצר אותה בפרויקט ומאמת את הבעלות על הקטגוריה לפני העלאת הקבצים.
  • השדה uri מפנה לקובץ http.json. הקובץ הזה מפנה לתבנית JSON שמתארחת ב-Cloud Storage ומייצג את המטען הייעודי (payload) של ה-JSON לנקודת הקצה של ה-webhook.

כדי לראות את הדוגמה, עיינו בקובץ התצורה של שירות ההתראות לשירות ההתראות של HTTP.

הרצת הסקריפט של הפעולה האוטומטית

כדי להגדיר התראות באופן אוטומטי:

  1. משכפלים את המאגר cloud-build-notifiers.

  2. מגדירים את Google Cloud CLI עם מזהה הפרויקט והאזור:

    gcloud config set project project-id
    gcloud config set run/region region
    

    כאשר:

    • ‫project-id הוא מזהה הפרויקט ב- Google Cloud .
    • ‫region הוא האזור שבו פורסים את שירות ההתראות.
  3. מריצים את הפקודה הבאה בתיקיית הבסיס של המאגר:

     ./setup.sh http config-path -b bucket-name
    

    כאשר:

    • ‫config-path הוא הנתיב לקובץ התצורה של מקבלי ההתראות.
    • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובץ התצורה. אם משמיטים את -b, הסקריפט יוצר שם קטגוריה עם סיומת אקראית (notifiers-config-random-suffix).

אחרי שמריצים את הסקריפט, מוצגת ההודעה הבאה:

** NOTIFIER SETUP COMPLETE **

ההתראות מוגדרות. אפשר לראות את הסקריפט המלא במאגר cloud-build-notifiers או להריץ את ./setup.sh --help כדי לקבל הוראות לשימוש בסקריפט.

Google Chat

מתבצעת ההגדרה של

בקטעים הבאים מתוארים השלבים שצריך להשלים לפני שמגדירים התראות באופן אוטומטי לשירות ההתראות.

הפעלת ממשקי API

מפעילים את ממשקי ה-API של Cloud Build,‏ Compute Engine,‏ Cloud Run,‏ Pub/Sub ו-Secret Manager, אם הם עדיין לא מופעלים.

התפקידים שנדרשים כדי להפעיל ממשקי API

כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

הפעלת ממשקי ה-API

קבלת פרטי כניסה ואחסון שלהם

  1. יוצרים מרחב משותף ב-Google Chat.

  2. במרחב המשותף שנוצר, יוצרים webhook נכנס כדי לפרסם הודעות מ-Cloud Build ב-Google Chat. כתובת ה-URL תיראה בערך כך:

    https://chat.googleapis.com/v1/spaces/...

  3. שומרים את כתובת ה-URL של ה-webhook הנכנס ב-Secret Manager:

    1. פותחים את הדף Secret Manager במסוף Google Cloud :

      פותחים את הדף Secret Manager.

    2. לוחצים על Create secret.

    3. נותנים שם לסוד.

    4. בקטע Secret value (ערך סודי), מוסיפים את כתובת ה-URL של ה-webhook הנכנס למרחב המשותף ב-Google Chat.

    5. כדי לשמור את הסוד, לוחצים על Create secret.

כתיבת קובץ תצורה של התראות

כותבים קובץ תצורה של התראות כדי להגדיר את ההתראות ב-Google Chat ולסנן אירועי build:

בקובץ התצורה הבא של השולח, השדה filter משתמש בCommon Expression Language עם המשתנה הזמין, build, כדי לסנן אירועי build עם סטטוס SUCCESS:

  apiVersion: cloud-build-notifiers/v1
  kind: GoogleChatNotifier
  metadata:
    name: example-googlechat-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

כאשר:

  • ‫webhook-url הוא משתנה ההגדרה שמשמש בדוגמה הזו כדי להפנות לנתיב של כתובת ה-URL של התגובה לפעולה מאתר אחר (webhook) ב-Google Chat שמאוחסן ב-Secret Manager. שם המשתנה שמציינים כאן צריך להיות זהה לשדה name בקטע secrets.
  • ‫project-id הוא המזהה של הפרויקט ב- Google Cloud .
  • ‫secret-name הוא השם של הסוד שמכיל את כתובת ה-URL של ה-webhook ב-Google Chat.

כדי לראות את הדוגמה, עיינו בקובץ התצורה של המודיע של Google Chat.

הרצת הסקריפט של הפעולה האוטומטית

כדי להגדיר התראות באופן אוטומטי:

  1. משכפלים את המאגר cloud-build-notifiers.

  2. מגדירים את Google Cloud CLI עם מזהה הפרויקט והאזור:

    gcloud config set project project-id
    gcloud config set run/region region
    

    כאשר:

    • ‫project-id הוא מזהה הפרויקט ב- Google Cloud .
    • ‫region הוא האזור שבו פורסים את שירות ההתראות.
  3. מריצים את הפקודה הבאה בתיקיית הבסיס של המאגר:

./setup.sh googlechat config-path -b bucket-name -s secret-name

כאשר:

  • ‫config-path הוא הנתיב לקובץ התצורה של מקבלי ההתראות.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובץ התצורה. אם משמיטים את -b, הסקריפט יוצר שם קטגוריה עם סיומת אקראית (notifiers-config-random-suffix).
  • ‫secret-name הוא שם הסוד שמאוחסן ב-Secret Manager.

אחרי שמריצים את הסקריפט, מוצגת ההודעה הבאה:

** NOTIFIER SETUP COMPLETE **

ההתראות מוגדרות. אתם יכולים לראות את הסקריפט המלא במאגר cloud-build-notifiers או להריץ את ./setup.sh --help כדי לקבל הוראות לשימוש בסקריפט.

GitHub Issues

מתבצעת ההגדרה של

בקטעים הבאים מתוארים השלבים שצריך להשלים לפני שמגדירים התראות באופן אוטומטי לשירות ההתראות.

הפעלת ממשקי API

מפעילים את ממשקי ה-API של Cloud Build,‏ Compute Engine,‏ Cloud Run,‏ Pub/Sub ו-Secret Manager, אם הם עדיין לא מופעלים.

התפקידים שנדרשים כדי להפעיל ממשקי API

כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

הפעלת ממשקי ה-API

קבלת פרטי כניסה ואחסון שלהם

  1. יוצרים טוקן גישה אישי ל-GitHub:

    1. עוברים אל הגדרות GitHub כדי ליצור אסימון חדש.
    2. בוחרים את ההיקף repo.

    3. לוחצים על יצירת טוקן.

  2. מאחסנים את הטוקן ב-Secret Manager:

    1. פותחים את הדף Secret Manager במסוף Google Cloud :

      פותחים את הדף Secret Manager.

    2. לוחצים על Create secret.

    3. נותנים שם לסוד.

    4. בקטע Secret value, מוסיפים את הטוקן של GitHub.

    5. כדי לשמור את הסוד, לוחצים על Create secret.

כתיבת קובץ תצורה של תבנית

כותבים קובץ תצורה של תבנית כדי לתאר את הפורמט של הבעיות שנוצרות ב-GitHub:

בקובץ התצורה לדוגמה של התבנית הבאה, השדות title ו-body משתמשים במשתני החלפה מה-build:

{
    "title": "Build {{.Build.BuildTriggerId}}: {{.Build.Status}}",
    "body": "[{{.Build.ProjectId}}] {{.Build.BuildTriggerId}} status: **{{.Build.Status}}**\n\n[View Logs]({{.Build.LogUrl}})"
}

כדי לראות את הדוגמה, עיינו בקובץ התצורה של התבנית של שירות ההתראות של GitHub Issues.

אפשר להגדיר שדות נוספים מהפרמטרים הזמינים של גוף הבקשה מנקודת קצה ל-API של GitHub ליצירת בעיה.

כתיבת קובץ תצורה של התראות

כותבים קובץ תצורה של התראות כדי להגדיר את ההתראות ב-Google Chat ולסנן אירועי build:

בקובץ התצורה הבא של השולח, השדה filter משתמש בCommon Expression Language עם המשתנה הזמין, build, כדי לסנן אירועי build עם סטטוס SUCCESS:

apiVersion: cloud-build-notifiers/v1
kind: GitHubIssuesNotifier
metadata:
  name: example-githubissues-notifier
spec:
  notification:
    filter: build.status == Build.Status.FAILURE
    template: 
      type: golang
      uri: gs://bucket-name/template-file-name
    delivery:
      githubToken:
        secretRef: github-token
      githubRepo: myuser/myrepo
  secrets:
  - name: github-token
    value: projects/project-id/secrets/secret-name/versions/latest

כאשר:

  • ‫githubToken הוא משתנה ההגדרה שמשמש בדוגמה הזו כדי להפנות לאסימון של GitHub שמאוחסן ב-Secret Manager. שם המשתנה שמציינים כאן צריך להיות זהה לשדה name בקטע secrets.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובץ התבנית. אם הקטגוריה לא קיימת, סקריפט ההגדרות יוצר אותה בפרויקט ומאמת את הבעלות על הקטגוריה לפני העלאת הקבצים.
  • ‫template-file-name הוא השם של קובץ התבנית.
  • ‫myuser/myrepo הוא שם המאגר שבו ייווצרו הבעיות.
  • ‫project-id הוא המזהה של הפרויקט ב- Google Cloud .
  • ‫secret-name הוא שם הסוד שמכיל את הטוקן של GitHub.

כדי לראות את הדוגמה, עיינו בקובץ התצורה של המודיע של Google Chat.

כדי לראות שדות נוספים שאפשר לסנן לפיהם, עיינו במשאב Build. דוגמאות נוספות לסינון מופיעות במאמר שימוש ב-CEL לסינון אירועי build.

הרצת הסקריפט של הפעולה האוטומטית

כדי להגדיר התראות באופן אוטומטי:

  1. משכפלים את המאגר cloud-build-notifiers.

  2. מגדירים את Google Cloud CLI עם מזהה הפרויקט והאזור:

    gcloud config set project project-id
    gcloud config set run/region region
    

    כאשר:

    • ‫project-id הוא מזהה הפרויקט ב- Google Cloud .
    • ‫region הוא האזור שבו פורסים את שירות ההתראות.
  3. מריצים את הפקודה הבאה בתיקיית הבסיס של המאגר:

    ./setup.sh githubissues config-path -b bucket-name -t template-path -s secret-name

כאשר:

  • ‫config-path הוא הנתיב לקובץ התצורה של מקבלי ההתראות.
  • ‫bucket-name הוא השם של הקטגוריה ב-Cloud Storage שאליה סקריפט ההגדרות מעלה את קובצי ההגדרות והתבניות. אם משמיטים את -b, הסקריפט יוצר שם קטגוריה עם סיומת אקראית (notifiers-config-random-suffix).
  • ‫template-path הוא הנתיב לקובץ התבנית של ההתראות. קובץ התבנית של השולחים מכיל את תבנית ה-JSON שמתארחת ב-Cloud Storage ומייצגת את הודעת ההתראה. אתם יכולים לכלול את קובץ התבנית של השולחים כנתיב באמצעות המשתנה הזה, או בשדה uri של קובץ התצורה של השולחים.
  • ‫secret-name הוא שם הסוד שמאוחסן ב-Secret Manager.

אחרי שמריצים את הסקריפט, מוצגת ההודעה הבאה:

** NOTIFIER SETUP COMPLETE **

ההתראות מוגדרות. אתם יכולים לראות את הסקריפט המלא במאגר cloud-build-notifiers או להריץ את ./setup.sh --help כדי לקבל הוראות לשימוש בסקריפט.

המאמרים הבאים