בעזרת Cloud Build אפשר ליצור טריגרים ל-build ממאגרים שמתארחים ב-GitHub. אתם יכולים להריץ בנייה בתגובה לאירועים כמו שליחת קומיטים או בקשות מיזוג שמשויכות למאגר GitHub שלכם.
בדף הזה מוסבר איך להפעיל טריגרים של בנייה עבור מופע של GitHub. מידע נוסף זמין במאמרים בנושא טריגרים של Cloud Build ומאגרי Cloud Build.
לפני שמתחילים
מפעילים את Cloud Build API, אם הוא עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
כדי ליצור טריגר למאגר GitHub, צריך ליצור חיבור בין Google Cloud לבין המאגר. כדי ליצור חיבור באמצעות Developer Connect, אפשר לעיין במאמר חיבור ל-GitHub במסמכי התיעוד של Developer Connect.
יצירת טריגר GitHub
בקטע הזה מוסבר איך ליצור טריגר ולקשר אותו להתקנה שלכם ב-GitHub.
מסוף Google Cloud
כדי ליצור טריגרים של GitHub באמצעות מסוף Google Cloud :
פותחים את הדף Triggers במסוף Google Cloud .
בוחרים את Google Cloud הפרויקט ולוחצים על Open.
לוחצים על Create trigger (יצירת ביטוי להפעלה).
מזינים את הגדרות הטריגר הבאות:
שם: מזינים שם לטריגר.
אזור: בוחרים את האזור של הטריגר.
- אם קובץ ההגדרות של ה-build שמשויך לטריגר מציין מאגר פרטי, Cloud Build משתמש במאגר הפרטי כדי להריץ את ה-build. במקרה הזה, האזור שאתם מציינים בטריגר חייב להיות זהה לאזור שבו יצרתם את המאגר הפרטי.
- אם קובץ התצורה של ה-build שמשויך לטריגר לא מציין מאגר פרטי, Cloud Build משתמש במאגר ברירת המחדל כדי להריץ את ה-build באותו אזור שבו מוגדר הטריגר.
תיאור (אופציונלי): מזינים תיאור לטריגר.
אירוע: בוחרים את אירוע המאגר להפעלת הטריגר.
Push to a branch: מגדירים את הטריגר להתחלת בנייה של קומיטים בענף מסוים.
Push new tag: מגדירים את הטריגר להתחלת בנייה בביצועי Commit שמכילים תג מסוים.
בקשת משיכה: מגדירים את הטריגר להתחלת בנייה בהתחייבויות לבקשת משיכה.
מקור: הגדרת פרטים על מאגר GitHub:
- Repository service: בוחרים באפשרות Developer Connect.
מאגר: בוחרים מאגר מתוך רשימת המאגרים הזמינים.
Branch או Tag: מציינים ביטוי רגולרי עם ערך הענף או התג להתאמה. כאן אפשר לקרוא מידע על התחביר המקובל של ביטויים רגולריים.
שליטה בהערות: אם בחרתם באפשרות בקשת משיכה בתור אירוע, אתם יכולים לבחור באחת מהאפשרויות הבאות כדי לקבוע אם הטריגר יפעיל את הבנייה באופן אוטומטי:
נדרש למעט בעלים ושותפי עריכה: כשבעלים או שותפי עריכה של מאגר יוצרים או מעדכנים בקשת משיכה, הטריגר מפעיל את הבנייה באופן אוטומטי. אם משתמש חיצוני יוזם את הפעולה, הבנייה מתבצעת רק אחרי שבעלים או משתף פעולה מגיבים
/gcbrunעל בקשת המיזוג.חובה: כשמשתמש יוצר או מעדכן בקשת מיזוג, תהליכי הבנייה מופעלים רק אחרי שהבעלים או משתף הפעולה מגיבים
/gcbrunלבקשת המיזוג. תהליכי build מופעלים בכל פעם שמבצעים שינוי בבקשת משיכה.לא נדרש: כשמשתמש שולח בקשת מיזוג או מעדכן אותה, טריגרים מפעילים באופן אוטומטי את תהליכי הבנייה.
Configuration (תצורה): בוחרים את קובץ תצורת ה-build שנמצא במאגר המרוחק או יוצרים קובץ תצורת build מוטבע לשימוש ב-build.
- סוג: בוחרים את סוג ההגדרה שרוצים להשתמש בו ב-build.
- זיהוי אוטומטי: Cloud Build מזהה אוטומטית את סוג ההגדרה אם יש לכם קובץ
cloudbuild.yamlאוDockerfileבמאגר. - קובץ תצורת Cloud Build (yaml או json): משתמשים בקובץ תצורת build להגדרה.
- Dockerfile: משתמשים ב-
Dockerfileלהגדרה. - Buildpacks: משתמשים ב-buildpacks להגדרה.
- זיהוי אוטומטי: Cloud Build מזהה אוטומטית את סוג ההגדרה אם יש לכם קובץ
מיקום: מציינים את המיקום של ההגדרה.
- מאגר: אם קובץ ההגדרות נמצא במאגר המרוחק, צריך לציין את המיקום של קובץ הגדרות הבנייה או של ספריית
Dockerfileולתת שם לתמונה שנוצרת. אם ההגדרה היאDockerfile, אפשר גם לספק זמן קצוב לתהליך הבנייה. אחרי שמזינים אתDockerfileואת שם התמונה, מוצגת תצוגה מקדימה של פקודתdocker buildשה-build יבצע. - בתוך השורה: אם בחרתם באפשרות קובץ הגדרות של Cloud Build (yaml או json), תוכלו לציין את הגדרות ה-build בתוך השורה. לוחצים על Open Editor כדי לכתוב את קובץ ההגדרות של ה-build בGoogle Cloud מסוף באמצעות תחביר YAML או JSON. לוחצים על סיום כדי לשמור את הגדרות ה-build.
- מאגר: אם קובץ ההגדרות נמצא במאגר המרוחק, צריך לציין את המיקום של קובץ הגדרות הבנייה או של ספריית
- סוג: בוחרים את סוג ההגדרה שרוצים להשתמש בו ב-build.
משתני החלפה (אופציונלי): אם בחרתם בקובץ התצורה של Cloud Build כאפשרות תצורת ה-build, אתם יכולים להגדיר בשדה הזה משתני החלפה ספציפיים לטריגר. לדוגמה, נניח שאתם יוצרים כמה טריגרים, וכל טריגר פורס את האפליקציה בסביבה ספציפית. אתם יכולים לציין שהאפליקציה שלכם נפרסת בסביבה בקובץ ההגדרות של ה-build, ואז להשתמש בשדה הזה כדי להגדיר משתני החלפה שמציינים לאיזו סביבה הטריגר הזה צריך לפרוס. מידע על ציון ערכי החלפה בקובצי הגדרות build זמין במאמר החלפת ערכים של משתנים.
Build logs (יומני בנייה) (אופציונלי): מסמנים את התיבה כדי לשלוח יומני בנייה ל-GitHub. במאמר הצגת יומני בנייה מוסבר איך לצפות ביומני בנייה.
חשבון שירות: בוחרים את חשבון השירות שבו רוצים להשתמש כשמפעילים את הטריגר. אם מדיניות הארגון מאפשרת שימוש בחשבון השירות מדור קודם של Cloud Build, אפשר להשאיר את השדה הזה ריק כדי להשתמש בחשבון השירות מדור קודם. אחרת, צריך לבחור את חשבון השירות הספציפי שבו רוצים להשתמש, גם אם זה חשבון השירות שמוגדר כברירת מחדל של Compute Engine.
לוחצים על יצירה כדי לשמור את טריגר לפיתוח גרסת Build.
כדי ליצור טריגרים של GitHub באמצעות פקודות gcloud, אפשר לעיין בgcloudפקודות ליצירת טריגר לפיתוח גרסת Build.
CLI של gcloud
כדי ליצור טריגרים של GitHub באמצעות פקודות gcloud, מריצים את הפקודה הבאה:
gcloud alpha builds triggers create developer-connect
--name=TRIGGER_NAME \
--git-repository-link=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME \
--branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
--build-config=BUILD_CONFIG_FILE \
--region=REGION \
--service-account=SERVICE-ACCOUNT
כאשר:
- TRIGGER_NAME הוא השם של הטריגר.
- PROJECT_ID הוא Google Cloud מזהה הפרויקט.
- REGION הוא האזור של הטריגר.
- CONNECTION_NAME הוא השם של החיבור ל-GitHub.
- GIT_REPOSITORY_LINK הוא הקישור למאגר Git.
- BRANCH_PATTERN הוא שם הענף במאגר שבו רוצים להפעיל את ה-build.
- TAG_PATTERN הוא שם התג במאגר שמשמש להפעלת ה-build.
- BUILD_CONFIG_FILE הוא הנתיב לקובץ התצורה של ה-build.
- SERVICE-ACCOUNT הוא חשבון השירות שבו יש להשתמש לפעולות של הפעלה ובנייה.
API
כדי ליצור טריגר GitHub באמצעות ה-API, משתמשים בתבנית ה-JSON הבאה:
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"developer_connect_config": {
"git_repository_link": "PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME",
"git_repository_link_type": "GITHUB",
// Field filter must be only one of the following:
"pullRequest": "PULL_REQUEST_FILTER",
"push": "PUSH_FILTER"
}
}
כאשר:
- PROJECT_ID הוא Google Cloud מזהה הפרויקט.
- REGION הוא האזור של הטריגר.
- CONNECTION_NAME הוא השם של החיבור ל-GitHub.
- GIT_REPOSITORY_LINK הוא הקישור למאגר Git.
- REPO_NAME הוא שם המאגר.
- PULL_REQUEST_FILTER הוא מופע של
PullRequestFilter, שמגדיר את המסנן שמאפשר ל-Cloud Build להפעיל בנייה כשמתבצעת ב-GitHub בקשת משיכה תואמת. - PUSH_FILTER הוא מופע של
PushFilter, שמגדיר את המסנן שמאפשר ל-Cloud Build להפעיל בנייה כשמתבצעת פעולת push תואמת ב-GitHub.
מזינים את הפקודה curl הבאה במסוף:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json
כאשר:
- PROJECT_NUMBER הוא Google Cloud מספר הפרויקט.
- PROJECT_ID הוא Google Cloud מזהה הפרויקט.
Terraform
דוגמאות לקוד Terraform ליצירת טריגר לפיתוח גרסת Build וקישור שלו להתקנת GitHub באמצעות Developer Connect זמינות בנושאים הבאים במסמכי Terraform:
איך יוצרים את השינויים ורואים אותם
כדי ליצור Build באמצעות טריגרים של GitHub, צריך לדחוף ולבצע Commit של שינויים במאגר המקור המקושר, או להגדיר את ה-Build בבקשות משיכה. אחרי שמעלים את השינויים, Cloud Build יוצר את הקוד.
כדי לראות את השינויים ב-build ב-GitHub, עוברים לכרטיסייה Checks במאגר.
תראו ש-Cloud Build יצר את השינויים שלכם. יוצגו גם פרטים נוספים על הבנייה, כמו הזמן שלקח לבנות את הקוד ומזהה הבנייה.
כדי לראות את השינויים ב-Build ב-Cloud Build, לוחצים על View more details on Google Cloud Build. ייפתח הדף Build details (פרטי בנייה) ב Google Cloud console, שבו אפשר לראות פרטי בנייה כמו סטטוס, יומנים ושלבי בנייה.
שיתוף נתונים
הנתונים שנשלחים ל-GitHub מ-Cloud Build עוזרים לכם לזהות טריגרים לפי שם ולראות את תוצאות הבנייה ב-GitHub.
הנתונים הבאים משותפים כרגע בין Cloud Build ל-GitHub:
- מזהה פרויקט ב-Cloud
- שם הטריגר
- יומני בנייה
אם יצרתם טריגרים לפני אוגוסט 2020, יכול להיות ששיתוף הנתונים לא מופעל בפרויקט שלכם. כדי להפעיל שיתוף נתונים לכל טריגר GitHub בפרויקט, לוחצים על Enable בכרטיסייה Cloud Build Data sharing.
אם הפעלתם בדיקות סטטוס נדרשות במאגר ב-GitHub, הפעלת שיתוף הנתונים עלולה לגרום להפסקת בדיקות הסטטוס באופן זמני. כדי לשנות את ההגדרות של בדיקת הסטטוס כך שיחפשו את שם הטריגר, אפשר:
- השבתה של בדיקות נדרשות ספציפיות ל-Cloud Build במאגר GitHub
- איך מוודאים ששיתוף הנתונים מופעל ב-Cloud Build
- הפעלת גרסת build חדשה ב-Cloud Build שמפרסמת סטטוסים במאגר
- הפעלה מחדש של בדיקות סטטוס נדרשות, בחירת שם הטריגר