בעזרת Cloud Build אפשר ליצור טריגרים ל-build ממאגרים שמתארחים ב-GitLab. אתם יכולים להריץ בנייה בתגובה לאירועים כמו שליחת קומיטים או בקשות מיזוג שמשויכות למאגר GitLab שלכם.
בדף הזה מוסבר איך להפעיל טריגרים של בנייה במופע GitLab. מידע נוסף זמין במאמרים בנושא טריגרים של Cloud Build ומאגרי Cloud Build.
לפני שמתחילים
פועלים לפי ההוראות להתחברות למארח GitLab.מפעילים את Cloud Build API ואת Secret Manager API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
כדי ליצור טריגר למאגר GitLab, צריך ליצור חיבור בין Google Cloud לבין המאגר. כדי ליצור חיבור דרך אפליקציית GitLab ב- Google Cloud, אפשר לעיין במאמר חיבור למאגר GitLab.
יצירת טריגר GitLab
בקטע הזה מוסבר איך ליצור טריגר ולקשר אותו להתקנה של GitLab.
מסוף Google Cloud
כדי ליצור טריגרים של GitLab באמצעות מסוף Google Cloud , מבצעים את הפעולות הבאות:
פותחים את הדף טריגרים:
בוחרים את הפרויקט הרלוונטי בחלק העליון של הדף ולוחצים על Open. Google Cloud
לוחצים על Create trigger (יצירת ביטוי להפעלה).
מזינים את הגדרות הטריגר הבאות:
שם: שם לטריגר.
אזור: בוחרים את האזור של הטריגר.
- אם קובץ ההגדרות של ה-build שמשויך לטריגר מציין מאגר פרטי, Cloud Build משתמש במאגר הפרטי כדי להריץ את ה-build. במקרה הזה, האזור שאתם מציינים בטריגר חייב להיות זהה לאזור שבו יצרתם את המאגר הפרטי.
- אם קובץ התצורה של ה-build שמשויך לטריגר לא מציין מאגר פרטי, Cloud Build משתמש במאגר ברירת המחדל כדי להריץ את ה-build באותו אזור שבו מוגדר הטריגר.
תיאור (אופציונלי): תיאור של הטריגר.
Event (אירוע): בוחרים את אירוע המאגר להפעלת הטריגר.
Push to a branch: מגדירים את הטריגר להתחלת בנייה של קומיטים בענף מסוים.
Push new tag: מגדירים את הטריגר להתחלת בנייה בביצועי Commit שמכילים תג מסוים.
בקשת משיכה: מגדירים את הטריגר להתחלת בנייה כשמתבצעות פעולות Commit לבקשת מיזוג.
מקור: הגדרת מידע על מאגר GitLab:
שירות מאגר: בוחרים באפשרות Cloud Build.
יצירת מאגר: בוחרים באפשרות דור שני כמקור.
מאגר: בוחרים מאגר מרשימת המאגרים הזמינים.
Branch או Tag: מציינים ביטוי רגולרי עם ערך הענף או התג להתאמה. מידע על תחביר מקובל של ביטויים רגולריים זמין במאמר בנושא תחביר RE2.
שליטה בתגובות: אם בחרתם באפשרות בקשת משיכה בתור אירוע, אתם יכולים לבחור באחת מהאפשרויות הבאות כדי לקבוע אם הטריגר יפעיל באופן אוטומטי את הבנייה:
חובה, למעט בעלים ושותפי עריכה: כשבעלים או שותפי עריכה של מאגר יוצרים או מעדכנים בקשת משיכה, הטריגר מפעיל את הבנייה באופן אוטומטי. אם משתמש חיצוני יוזם את הפעולה, הבנייה מתבצעת רק אחרי שבעלים או משתף פעולה מגיבים
/gcbrunעל בקשת המשיכה.חובה: כשמשתמש יוצר או מעדכן בקשת מיזוג, תהליכי הבנייה מופעלים רק אחרי שבעלים או משתף פעולה מגיב
/gcbrunלבקשת המיזוג. הגרסאות מתבצעות בכל פעם שמתבצע שינוי בבקשת משיכה.לא נדרש: כשמשתמש יוצר או מעדכן בקשת מיזוג, טריגרים מפעילים אוטומטית את תהליכי הבנייה.
Configuration (הגדרה): בוחרים את קובץ הגדרת ה-build שנמצא במאגר או מגדירים את ה-build בשורה בטריגר.
סוג: בוחרים את סוג ההגדרה שרוצים להשתמש בה ב-build.
- קובץ תצורה של Cloud Build (yaml או json): משתמשים בקובץ תצורת build בשביל ההגדרה.
- Dockerfile: משתמשים ב-
Dockerfileלהגדרה.
מיקום: מציינים את המיקום של ההגדרה.
מאגר: אם קובץ ההגדרות נמצא במאגר, מציינים את המיקום של קובץ הגדרות הבנייה או של ספריית
Dockerfileואת השם של התמונה שנוצרת. אם ההגדרה היאDockerfile, אפשר גם להגדיר זמן קצוב לתהליך הבנייה. אחרי שתספקו אתDockerfileואת שם התמונה, תוכלו לראות תצוגה מקדימה של פקודתdocker buildשה-build יבצע.בתוך השורה: אם בחרתם באפשרות קובץ תצורת build ב-Cloud Build (yaml או json), תוכלו לציין את תצורת ה-build בתוך השורה. לוחצים על Open Editor (פתיחת העורך) כדי לכתוב את קובץ הגדרות ה-build במסוףGoogle Cloud באמצעות תחביר YAML או JSON. לוחצים על סיום כדי לשמור את הגדרות ה-build.
לוחצים על Create (יצירה) כדי ליצור את הטריגר של GitLab Enterprise Edition.
CLI של gcloud
כדי ליצור טריגרים של GitLab באמצעות פקודות gcloud, מריצים את הפקודה הבאה:
gcloud builds triggers create gitlab \
--name=TRIGGER_NAME \
--repository=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/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 הוא השם של החיבור ל-GitLab.
- REPO_NAME הוא שם המאגר
- BRANCH_PATTERN הוא שם הענף במאגר שבו רוצים להפעיל את ה-build.
- TAG_PATTERN הוא שם התג במאגר שמשמש להפעלת ה-build.
- BUILD_CONFIG_FILE הוא הנתיב לקובץ התצורה של ה-build.
- SERVICE-ACCOUNT הוא חשבון השירות שבו יש להשתמש לפעולות של הפעלה ובנייה.
API
כדי ליצור טריגר GitLab באמצעות ה-API, משתמשים בתבנית JSON הבאה:
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"repository_event_config": {
"repository": "REPO_NAME",
"repository_type": "GITLAB",
// Field filter must be only one of the following:
"pullRequest": "PULL_REQUEST_FILTER",
"push": "PUSH_FILTER"
}
}
כאשר:
- REPO_NAME הוא השם של חיבור המאגר שהגדרתם ב-Cloud Build.
- PULL_REQUEST_FILTER הוא מופע של
PullRequestFilter, שמגדיר את המסנן שמאפשר ל-Cloud Build להפעיל בנייה כשמתבצעת בקשת מיזוג תואמת ב-GitLab. - PUSH_FILTER הוא מופע של
PushFilter, שמגדיר את המסנן שמאפשר ל-Cloud Build להפעיל בנייה כשמתבצעת פעולת push תואמת ב-GitLab.
מזינים את הפקודה 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
שיתוף נתונים
הנתונים שנשלחים אל GitLab מ-Cloud Build עוזרים לכם לזהות טריגרים לפי שם ולראות את תוצאות ה-build במאגרי GitLab.
הנתונים הבאים משותפים בין Cloud Build לבין המארח שלכם ב-GitLab:
- Google Cloud מזהה הפרויקט
- שם הטריגר