צפייה בתוצאות הבנייה

בדף הזה מוסבר איך לצפות במידע על בנייה ב-Cloud Build באמצעות מסוף Google Cloud , כלי שורת הפקודה gcloud ו-Cloud Build API.

לפני שמתחילים

כדי להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה gcloud.

צפייה בתוצאות הבנייה

כדי לראות את יומני הבנייה, לבעלי הרשאות נדרש אחד מתפקידי ה-IAM הבאים בנוסף להרשאות ה-IAM של Cloud Build:

למידע נוסף על ההרשאות שנדרשות כדי לצפות ביומני בנייה ב-Cloud Build, ב-GitHub או ב-GitHub Enterprise אחרי יצירת טריגר, אפשר לעיין במאמר בנושא צפייה ביומני בנייה.

המסוף

בתפריט Build History במסוף Google Cloud אפשר לראות מידע על הסטטוס של build (למשל, הצלחה או כשל), המקור, התוצאות, זמן היצירה, התמונות ועוד.

כדי לראות את התפריט Build History, פותחים את הדף Build History במסוף Google Cloud :

פתיחת הדף Build History

מוצג הדף 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
  • הגרסה מסומנת בסימן SUCCESS.
  • שלבים שנכשלו שהוגדרו עם allowFailure או allowExitCodes מסומנים בסימן FAILED.
גרסת ה-Build נכשלת FAILURE
  • שלב שנכשל מסומן ב-FAILED.
  • שלבים שהצליחו לפני סיום ה-build מסומנים בסימן SUCCESS.
  • שלבים באמצע הביצוע מסומנים בסמל CANCELLED.
  • שלבים שלא מתחילים לפעול מסומנים ב-QUEUED.
המשתמש ביטל את הבנייה CANCELLED
  • שלבים שהצליחו לפני ביטול ה-build מסומנים בסימן SUCCESS.
  • שלבים באמצע הביצוע מסומנים בסמל CANCELLED.
  • שלבים שלא מתחילים לפעול מסומנים ב-QUEUED.
הזמן שהוקצב ליצירה פג TIMEOUT
  • שלבים שמסתיימים בהצלחה לפני שה-build מגיע לזמן הקצוב לתפוגה מסומנים בסימן SUCCESS.
  • שלבים באמצע הביצוע מסומנים בסמל CANCELLED.
  • שלבים שלא מתחילים לפעול מסומנים ב-QUEUED.
פג הזמן הקצוב לשלב FAILED
  • השלב שפג הזמן הקצוב שלו מסומן בסמל TIMEOUT.
  • שלבים שהצליחו לפני השלב שחלף הזמן הקצוב שלו מסומנים בסימן SUCCESS.
  • שלבים באמצע הביצוע מסומנים בסמל CANCELLED.
  • שלבים שלא מתחילים לפעול מסומנים ב-QUEUED.

כדי לראות את הסטטוס של כל שלב ושל הבנייה, מריצים את הפקודה 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 על סמך הערכים של השדות הבאים:

  • status
  • build_id
  • trigger_id
  • source.storage_source.bucket
  • source.storage_source.object
  • source.repo_source.repo_name
  • source.repo_source.branch_name
  • source.repo_source.tag_name
  • source.repo_source.commit_sha
  • source_provenance.resolved_repo_source.commit_sha
  • results.images.name
  • results.images.digest
  • options.requested_verify_option
  • tags
  • images
  • create_time
  • start_time
  • finish_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 תגים לכל בנייה
  • תגים יכולים להכיל אותיות, מספרים וקווים תחתונים בכל מיקום במחרוזת.
  • התגים יכולים להכיל נקודות ומקפים בכל מיקום, חוץ מהמיקום הראשון במחרוזת.

כדי להוסיף תגים לבנייה:

  1. בקובץ הגדרות ה-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'
    
  2. כדי לראות את הגרסאות שמתויגות באשכול, משתמשים באפשרות --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
    

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