ב-Cloud Source Repositories מתפרסמים הודעות לגבי המאגר שלכם במשאבים עם שמות שנקראים נושאים. אפליקציות שרשומות לנושאים ב-Pub/Sub יכולות לקבל את ההודעות האלה. לדוגמה, תוכלו לקבל התראה כשמצב המאגר ישתנה. בנוסף, אתם יכולים להגדיר תפקידים והרשאות לנושאי Pub/Sub כדי לקבוע איך המשתמשים יבצעו אינטראקציה עם אירועי Pub/Sub שהמאגר יוצר.
בדף הזה תוכלו לקרוא סקירה כללית על התראות Pub/Sub ל-Cloud Source Repositories. כדי ללמוד איך להגדיר ולהשתמש בהתראות Pub/Sub, אפשר לעיין במאמר הגדרת התראות Pub/Sub.
היקף
אפשר להגדיר את Cloud Source Repositories כך שיפרסמו אירועים בנושא Pub/Sub. אפשר להגדיר את ההיקף של התצורה הזו ל Google Cloud פרויקט שלם או למאגר נתונים בודד.
אחרי ההגדרה, Cloud Source Repositories מפרסם הודעות בנושא Pub/Sub שצוין באמצעות חשבון השירות שלכם. קודם צריך לתת לחשבון השירות הרשאות לפרסום בנושא. אם הפעלתם רישום ביומן ביקורת ב-Pub/Sub, חשבון השירות הזה יוצג כמי שקורא ל-Pub/Sub APIs.
הרשאות
כדי להגדיר את Cloud Source Repositories לפרסום הודעות, צריך:
- פרויקט או מאגר שמתבצע מעקב אחרי האירועים שקורים בו. אם מציינים פרויקט, כל המאגרים שבאותו פרויקט נמצאים במעקב.
- נושא Pub/Sub ש-Cloud Source Repositories מפרסם בו הודעות.
- חשבון שירות לגישה לנושא Pub/Sub.
- פורמט הודעה (כמו JSON או Protocol Buffers).
כשמגדירים את Cloud Source Repositories ל-Pub/Sub, צריך לוודא שיש לכם את ההרשאות הבאות:
-
source.repos.updateRepoבמאגר שצוין אוsource.repos.updateProjectConfigבפרויקט שצוין iam.serviceAccounts.actAsבחשבון השירות שצוין
אחרי שרושמים את נושא ה-Pub/Sub, לחשבון השירות שצוין צריכה להיות הרשאה pubsub.topics.publish לפרסום הודעה.
סוגי אירועים
שירות Pub/Sub יכול לשלוח לכם התראה כשמשתמש יוצר מאגר, מוחק מאגר או מעלה קומיט למאגר. כל אירוע הוא סוג אירוע ספציפי. בטבלה הבאה מפורטים הסוגים וההגדרות שלהם.
| סוג אירוע | תיאור |
|---|---|
| CreateRepo | מתרחש כשמשתמש יוצר מאגר. |
| RefUpdate | מתרחש כשמשתמש מריץ פקודה של git push. |
| DeleteRepo | מתרחש כשמשתמש מוחק מאגר. |
פורמט ההתראות
אפשר להגדיר את Pub/Sub כך שישתמש באחד משני פורמטים להתראות:
- JSON
- מאגרי אחסון לפרוטוקולים
נתוני ההתראה
כל התראה ב-Pub/Sub מכילה את הפרטים הבאים לגבי אירוע:
| שם השדה | תיאור |
|---|---|
| name | שם המאגר. |
| url | כתובת ה-URL של המאגר. |
| eventTime | השעה שבה בוצע השינוי. |
| refUpdateEvent | מידע על השינוי הספציפי. |
| createRepoEvent | מציין אם משתמש יצר מאגר. |
| deleteRepoEvent | מציין אם משתמש מחק מאגר. |
אם ההתראה היא על פקודה git push, ההתראה שמכילה את השדה refUpdateEvent כוללת את הפרטים הבאים:
| שם השדה | תיאור |
|---|---|
| אימייל | כתובת האימייל של המשתמש שביצע את השינוי. |
| refUpdates | מידע על הקומיט. |
השדה refUpdates מכיל את הפרטים הבאים על הפקודה git push:
| שם השדה | תיאור |
|---|---|
| refName | שם הענף. |
| updateType | סוג העדכון. מידע נוסף זמין במאמר בנושא סוגי עדכונים. |
| oldId | מזהה הקומיט הקודם של המאגר. |
| newId | המזהה החדש של המאגר. |
סוגי עדכונים
אירוע git push יכול להיות אחד מארבעה סוגי עדכונים. אפשר לראות את הסוג בשדה updateType של ההתראה.
| סוג העדכון | תיאור |
|---|---|
| צור | מתרחש כשהפקודה יוצרת הפניה חדשה. |
| UPDATE_FAST_FORWARD | מתרחש כשהפקודה מעדכנת אובייקט. |
| UPDATE_NON_FAST_FORWARD | השגיאה מתרחשת כשהפקודה משתמשת בדגל -f, כמו git push -f. |
| מחיקה | האירוע מתרחש כשהפקודה מוחקת הפניה. |
דוגמה להתראה
בדוגמה הבאה מוצגים הנתונים שכלולים בהתראה של Pub/Sub. ההתראה הזו היא בפורמט JSON.
{
"name": "projects/test-project/repos/pubsub-test",
"url": "[URL_PATH]",
"eventTime": "2018-02-21T21:23:25.566175Z",
"refUpdateEvent": {
"email": "someone@somecompany.com",
"refUpdates": {
"refs/heads/master": {
"refName": "refs/heads/master",
"updateType": "UPDATE_FAST_FORWARD",
"oldId": "c7a28dd5de3403cc384a025834c9fce2886fe763",
"newId": "f00768887da8de62061210295914a0a8a2a38226"
}
}
}
}
דוגמה להגדרה של פרויקט שמתפרס על פני כמה פרויקטים
אפשר להגדיר את Cloud Source Repositories כך שיפרסם הודעה בנושא בפרויקט אחר. במקרה כזה, צריך ליצור חשבון שירות באותו פרויקט שבו נמצא המאגר. בפרויקט שמכיל את הנושא ב-Pub/Sub, מקצים את התפקיד roles/pubsub.publisher לחשבון השירות הזה. כשמגדירים את Cloud Source Repositories עם החשבון הזה ועם נושא Pub/Sub הזה, הודעות האירועים של המאגר מופיעות בנושא בפרויקט השני.