בדף הזה מוסבר איך לצפות במידע על בנייה ב-Cloud Build באמצעות מסוף Google Cloud , כלי שורת הפקודה gcloud ו-Cloud Build API.
לפני שמתחילים
כדי להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה gcloud.
צפייה בתוצאות הבנייה
כדי לראות את יומני הבנייה, לבעלי הרשאות נדרש אחד מתפקידי ה-IAM הבאים בנוסף להרשאות ה-IAM של Cloud Build:
אם יומני הבנייה נמצאים בקטגוריה של Cloud Storage שמוגדרת כברירת מחדל, צריך להעניק את התפקיד Project > Viewer.
אם יומני הבנייה נמצאים בקטגוריה של Cloud Storage שצוינה על ידי המשתמש, צריך להעניק את התפקיד Storage Object Viewer.
למידע נוסף על ההרשאות שנדרשות כדי לצפות ביומני בנייה ב-Cloud Build, ב-GitHub או ב-GitHub Enterprise אחרי יצירת טריגר, אפשר לעיין במאמר בנושא צפייה ביומני בנייה.
המסוף
בתפריט Build History במסוף Google Cloud אפשר לראות מידע על הסטטוס של build (למשל, הצלחה או כשל), המקור, התוצאות, זמן היצירה, התמונות ועוד.
כדי לראות את התפריט Build History, פותחים את הדף Build History במסוף Google Cloud :
מוצג הדף Build history (היסטוריית בנייה), שבו מופיעה רשימה של הגרסאות האחרונות.
אפשר לסנן את הגרסאות באמצעות השדה Filter או על ידי הזנת שאילתה.
כדי לראות עמודות נוספות כמו תיאור הטריגר וארטיפקטים, משתמשים בבורר העמודות .
כדי לראות פרטים על גרסת build ספציפית, עוברים אל היסטוריית ה-build ולוחצים על גרסת build מסוימת. מוצג הדף Build details עם Build Summary של הגרסה. Build Summary כולל:
- Build Log (יומן Build): יומן ה-Build.
- פרטי הביצוע: פרטי הבנייה, כולל משתני הסביבה והחלפות.
- Build dependencies: אם ל-build יש תלות אחת או יותר, בכרטיסייה הזו מוצג מידע על התלות, כמו כתובת ה-URL של המאגר והגרסה.
- Build Artifacts: הארטיפקטים של ה-build, כמו קובצי אימג' של קונטיינרים, יומני build או קבצים בינאריים.
כדי לראות את יומן הבנייה או את פרטי ההפעלה שספציפיים לשלב בנייה, בוחרים את השלב בטבלת Steps (שלבים) בצד ימין.
gcloud
הפקודה gcloud builds list מציגה את כל הגרסאות שלכם.
כדי לראות את הגרסאות שלכם, מריצים את הפקודה הבאה:
gcloud builds list
הפלט אמור להיראות כך:
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
3a2055bc-ccbd-4101-9434-d376b88b8940 2018-02-16T18:33:26+00:00 23S gs://gcb-docs-project_cloudbuild/source/1518806004.25-db1e250a7b7f496eb8242bfee5ac308e.tgz us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image (+1 more) SUCCESS
900704ca-7a0c-4569-ac08-884593c19aac 2018-02-16T18:32:32+00:00 gs://gcb-docs-project_cloudbuild/source/1518805951.23-03dd53d16f684c568fa2bb7ff7ebda06.tgz - FAILURE
021f9ede-ddaa-4cfb-8988-60142b015ebd 2018-02-14T15:48:44+00:00 10S gs://gcb-docs-project_cloudbuild/source/1518623322.56-9cd088ffc1e04f5aa6040728772d0c2a.tgz - SUCCESS
8126d538-3c43-4304-a14c-33aceec8cb97 2018-02-14T15:46:13+00:00 10S gs://gcb-docs-project_cloudbuild/source/1518623172.09-327c02585a4e44e782ac97dd80d5a5d5.tgz us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image (+1 more) SUCCESS
כדי לראות פרטים על גרסת build ספציפית, מריצים את הפקודה הבאה:
gcloud builds describe [BUILD_ID]
כאשר [BUILD_ID] הוא המזהה של ה-build שרוצים לקבל פרטים לגביו.
הפלט אמור להיראות כך:
createTime: '2018-02-22T14:49:54.066666971Z'
finishTime: '2018-02-22T14:50:05.463758Z'
id: bcdb9c48-d92c-4489-a3cb-08d0f0795a0b
images:
- us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
logUrl: https://console.cloud.google.com/cloud-build/builds/bcdb9c48-d92c-4489-a3cb-08d0f0795a0b?project=gcb-docs-project
logsBucket: gs://404889597380.cloudbuild-logs.googleusercontent.com
projectId: gcb-docs-project
results:
buildStepImages:
- sha256:a4363bc75a406c4f8c569b12acdd86ebcf18b6004b4f163e8e6293171462a79d
images:
- digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
name: us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
pushTiming:
endTime: '2018-02-22T14:50:04.731919081Z'
startTime: '2018-02-22T14:50:00.874058710Z'
- digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
name: us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image:latest
pushTiming:
endTime: '2018-02-22T14:50:04.731919081Z'
startTime: '2018-02-22T14:50:00.874058710Z'
source:
storageSource:
bucket: gcb-docs-project_cloudbuild
generation: '1519310993665963'
object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
sourceProvenance:
fileHashes:
gs://gcb-docs-project_cloudbuild/source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz#1519310993665963:
fileHash:
- value: -aRYrWp2mtfKhHSyWn6KNQ==
resolvedStorageSource:
bucket: gcb-docs-project_cloudbuild
generation: '1519310993665963'
object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
startTime: '2018-02-22T14:49:54.966308841Z'
status: SUCCESS
steps:
- args:
- build
- --no-cache
- -t
- us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
- .
name: gcr.io/cloud-builders/docker
status: SUCCESS
timing:
endTime: '2018-02-22T14:50:00.813257422Z'
startTime: '2018-02-22T14:50:00.102600442Z'
timeout: 600s
timing:
BUILD:
endTime: '2018-02-22T14:50:00.873604173Z'
startTime: '2018-02-22T14:50:00.102589403Z'
FETCHSOURCE:
endTime: '2018-02-22T14:50:00.087286880Z'
startTime: '2018-02-22T14:49:56.962717504Z'
PUSH:
endTime: '2018-02-22T14:50:04.731958202Z'
startTime: '2018-02-22T14:50:00.874057159Z'
סטטוס השלב וסטטוס ה-build
אחרי ש-build מסתיים, Cloud Build מספק status כללי ל-build וstatus לכל שלב ב-build.
בטבלה הבאה מפורטים הסטטוסים של שלב או של build במקרים של הצלחה, פסק זמן או כשל:
| אירוע | סטטוס הבנייה | סטטוס השלב |
|---|---|---|
| הבנייה מצליחה | SUCCESS |
כל השלבים מסומנים בסימן SUCCESS. |
| הגרסה נוצרת בהצלחה למרות שהשלבים נכשלו | SUCCESS |
|
| גרסת ה-Build נכשלת | FAILURE |
|
| המשתמש ביטל את הבנייה | CANCELLED |
|
| הזמן שהוקצב ליצירה פג | TIMEOUT |
|
| פג הזמן הקצוב לשלב | FAILED |
|
כדי לראות את הסטטוס של כל שלב ושל הבנייה, מריצים את הפקודה gcloud builds describe:
gcloud builds describe <var>BUILD_ID</var>
כאשר BUILD_ID הוא מזהה הבנייה.
בקטע הקוד הבא מוצג הסטטוס של כל שלב בנפרד מגרסת build שבה שלב מסוים הגיע לזמן קצוב לתפוגה:
status: FAILURE
steps:
- args:
- sleep
- '60'
id: long sleep
name: alpine
status: CANCELLED
timing:
endTime: '2018-02-26T14:09:18.531368493Z'
startTime: '2018-02-26T14:09:11.023235026Z'
waitFor:
- '-'
- args:
- sleep
- '3'
id: shorty
name: alpine
status: SUCCESS
timeout: 60s
timing:
endTime: '2018-02-26T14:09:15.497724138Z'
startTime: '2018-02-26T14:09:11.023676903Z'
waitFor:
- '-'
- args:
- sleep
- '60'
name: alpine
status: TIMEOUT
timeout: 3s
timing:
endTime: '2018-02-26T14:09:18.527488475Z'
startTime: '2018-02-26T14:09:15.497736775Z'
waitFor:
- shorty
- args:
- 'false'
name: alpine
status: QUEUED
waitFor:
- long sleep
timeout: 60s
סינון תוצאות הבנייה באמצעות שאילתות
כדי למצוא מידע על גרסאות שמתאימות לקריטריונים ספציפיים, מזינים מחרוזת שאילתה בשדה Filter Builds בדף Build history ב-Google Cloud console. לדוגמה, אפשר לשלוח שאילתה לגבי גרסאות build שנכשלו (שערך FAILURE מופיע בשדה הסטטוס), גרסאות build שנוצרו אחרי זמן מסוים, גרסאות build שתויגו ותנאים אחרים כאלה.
שדות נתמכים לשאילתות
אפשר להריץ שאילתות לגבי גרסאות build על סמך הערכים של השדות הבאים:
statusbuild_idtrigger_idsource.storage_source.bucketsource.storage_source.objectsource.repo_source.repo_namesource.repo_source.branch_namesource.repo_source.tag_namesource.repo_source.commit_shasource_provenance.resolved_repo_source.commit_sharesults.images.nameresults.images.digestoptions.requested_verify_optiontagsimagescreate_timestart_timefinish_time
שדות שמופיעים עם סימון נקודות (.) הם שדות משנה.
יצירת מחרוזת שאילתה
מחרוזות של שאילתות משתמשות בפורמט הכללי:
field="value"
כדי לציין שדה משנה, משתמשים בסימון נקודות, כמו results.images.name. השאילתות תומכות באופרטורים להשוואה = ו-!=, וגם באופרטורים >, >=, < ו-<= לשדות עם ערכים מספריים (כמו create_time).
אפשר ליצור שאילתות מורכבות באמצעות הביטויים הבוליאניים AND ו-OR.
דוגמאות נפוצות לשאילתות
כדי להריץ שאילתה על כל הבנייה המוצלחת:
status="SUCCESS"
כדי להריץ שאילתה על כל הבנייה שעדיין לא הסתיימה:
status="QUEUED" OR status="WORKING"
כדי לשלוח שאילתה לגבי גרסאות build עם שם תמונה מסוים של תוצאה:
(status="SUCCESS" OR status="FAILURE") AND \
results.images.name="us-east1-docker.pkg.dev/my-project/my-image"
כדי לשלוח שאילתה לגבי כל הגרסאות עם התג "prod":
tags="prod"
כדי לשלוח שאילתה לגבי גרסאות build שסומנו כמאומתות:
options.requested_verify_option="VERIFIED"
כדי להריץ שאילתה על גרסאות Build שמגיעות ממקור ב-Cloud Storage (בניגוד למאגר Cloud Source):
source.storage_source.bucket!=""
כדי לשלוח שאילתה לגבי גרסאות build עם סיכום תוצאות נתון:
results.images.digest="sha256:6c7147fe4c813845ac2a9aa6f937bb272b68784f647c4f64c7325723c7245c88"
כדי לשלוח שאילתה לגבי בנייה שהתחילה אחרי שעה מסוימת והסתיימה לפני שעה מסוימת (אזור זמן UTC):
create_time>"2016-10-12T18:43:49+00:00" AND finish_time<"2016-10-13T18:43:49+00:00"
סינון תוצאות הבנייה באמצעות תגים
אפשר להשתמש בתגים בקובצי ההגדרות, כדי לארגן את הבנייה בקבוצות ולסנן את הבנייה. אפשר לציין מחרוזות בתגים, כמו
"prod" או "test".
לתגים יש את המגבלות הבאות:
- מגבלת התווים לכל תג היא 128 תווים
- אפשר להגדיר עד 64 תגים לכל בנייה
- תגים יכולים להכיל אותיות, מספרים וקווים תחתונים בכל מיקום במחרוזת.
- התגים יכולים להכיל נקודות ומקפים בכל מיקום, חוץ מהמיקום הראשון במחרוזת.
כדי להוסיף תגים לבנייה:
בקובץ הגדרות ה-build, מוסיפים את השדה
tags:steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'us-east1-docker.pkg.dev/$PROJECT_ID/cb-demo-img', '.' ] images: - 'us-east1-docker.pkg.dev/$PROJECT_ID/cb-demo-img' tags: - 'test1' - 'test2'כדי לראות את הגרסאות שמתויגות באשכול, משתמשים באפשרות
--filterב-gcloud builds list. אפשר לסנן את הגרסאות על ידי ציון תג אחד או כמה תגים.כדי לסנן את הגרסאות לפי תג אחד, מציינים את התג כמחרוזת בשדה
tags. הפקודה הבאה מציגה רשימה של כל ה-builds שתויגו בתג'test1':gcloud builds list --filter "tags='test1'"כדי לסנן את הבנייה לפי כמה תגים, משתמשים ב-AND, ב-OR או ב-NOT כדי לציין את התגים. הפקודה הבאה מציגה רשימה של כל הגרסאות שמתויגות בתג
'test1'או'test2'וגם בתג'test3':gcloud builds list --filter "tags=('test1' OR 'test2') AND 'test3'"
אחרי הרצת הפקודות האלה, הפלט אמור להיראות כך:
ID CREATE_TIME DURATION SOURCE IMAGES STATUS d33a9895-... ... 1M45S gs://... us-east1-docker.pkg.dev/... SUCCESS
המאמרים הבאים
- איך צופים בתוצאות של טריגרים של בנייה
- איך צופים בתובנות לגבי אבטחת בנייה
- איך פותרים בעיות שקשורות לבנייה