ניהול יחסי תלות ב-build

בדף הזה מוסבר איך מציינים תלות בגרסת build. בעזרת Cloud Build אפשר לנהל את יחסי התלות של קוד המקור בנפרד מתהליך build.

בקובץ הגדרות ה-build, אפשר לציין מאגר אחד או יותר לשיבוט עבור ה-build, ואת הסדר שבו הם יאוחזרו. הגדרת יחסי תלות בדרך הזו מפרידה בין אחזור יחסי התלות לבין תהליך הבנייה עצמו.

אם לא כוללים תלות בקובץ תצורת ה-build,‏ Cloud Build משכפל את מאגר המקורות של הקוד שמכיל את קובץ תצורת ה-build (במקרה של build שמופעל על ידי טריגר) או את המאגר שמכיל את קוד המקור (במקרה של build שמופעל משורת הפקודה). אם כוללים יחסי תלות בקובץ תצורת ה-build, ‏ Cloud Build משכפל רק מאגרים שמצוינים בשדה dependencies.

התלויות משוכפלות לפי הסדר שבו אתם מציינים אותן. בנוסף, אחזור התלות מתרחש לפני שמופעלת לוגיקה שצוינה על ידי המשתמש. לכן, אפשר לסמוך על אחזור התלות.

יחסי התלות מוצגים בכרטיסייה Build dependencies בדף Build details.

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

ההוראות בדף הזה מניחות שיש לכם לפחות אחד משני סוגי המאגרים הבאים:

כדי לוודא של- יש את ההרשאות שנדרשות להוספת מאגר Developer Connect כתלות, צריך לבקש מהאדמין לתת ל- את תפקיד ה-IAM ‏Developer Connect Read Token Accessor ‏ (developerconnect.readTokenAccessor) בחשבון השירות. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שהאדמין גם יוכל לתת את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

ציון יחסי תלות

כדי לציין יחסי תלות, מוסיפים את השדה dependencies לקובץ התצורה של ה-build. ‫dependencies הוא נכס ברמה העליונה בהגדרת ה-build, אבל אפשר להציב אותו בכל מקום בקובץ.

ציון יחסי תלות ב-GitHub

כדי לציין תלות במאגר GitHub, מוסיפים את ההגדרות הבאות של dependencies לקובץ ההגדרות של ה-build:

YAML

 dependencies:
 - gitSource:
     repository:
       url: 'URL'
       developerConnect: 'DC_RESOURCE_PATH'
     revision: 'REVISION'
     recurseSubmodules: 'true|false'
     fetchTags: 'true|false'
     depth: 'DEPTH'
     destPath: 'DEST_PATH'

JSON

 {
     "dependencies": {
         "gitSource": {
             "repository": {
                 "url": "URL"
                 "developerConnect": "DC_RESOURCE_PATH"
             },
             "revision": "REVISION",
             "recurseSubmodules": true|false,
             "fetchTags": true|false,
             "depth": "DEPTH",
             "destPath": "DEST_PATH",
         },
     },
 }

מחליפים את הערכים הבאים:

  • URL: כתובת ה-URL מסוג HTTPS של המאגר שאותו רוצים לאחזר. העמודה הזו נדרשת אלא אם המאגר שלכם מחובר ל-Cloud Build באמצעות Developer Connect.

  • DC_RESOURCE_PATH: נתיב Google Cloud המשאב למאגר Developer Connect. לדוגמה: projects/my-project/locations/us-central1/connections/my-connection/gitRepositoryLinks/my-repo. העמודה הזו נדרשת אם המאגר שלכם מחובר ל-Cloud Build באמצעות Developer Connect.

    אם המאגר שלכם מקושר באמצעות Developer Connect, תצטרכו את הפרטים הבאים:

  • REVISION: שדה חובה. הגרסה, הגיבוב של הקומיט, התג או שם הענף שיש לאחזר מהמאגר.

  • recurseSubmodules: 'true|false': האם לאחזר מודולי משנה.

  • fetchTags: 'true|false': אופציונלי. הערך True אם צריך לאחזר גם תגים מרוחקים (ברירת המחדל היא false). הערה: כשהערך של depth הוא 1 (ברירת המחדל), git fetch מאחזר רק תגים שמפנים להתחייבויות בתוך הגבול הרדוד. כדי לאחזר את כל התגים ההיסטוריים, מגדירים את depth לערך -1.

  • DEPTH: אופציונלי, כמה עמוק בהיסטוריית המאגר צריך לבצע אחזור. אם לא מציינים, מתבצע אחזור של הקומיט האחרון.

    • 1: הקומיט האחרון
    • 2: שתי ההתחייבויות האחרונות
    • 3: שלוש ההתחייבויות האחרונות
    • -1: כל הקומיטים
  • DEST_PATH: שדה חובה. הנתיב לספרייה שאליה משכפלים את המאגר. לדוגמה, my/repo.

    כשמגדירים את dest_path, המאגר נטען ב-/workspace/<dest_path>. הערך של dest_path חייב להיות נתיב יחסי לספריית העבודה של ה-build.

הגדרת ארטיפקט גנרי כתלות

כדי לציין ארטיפקט כללי כתלות, מוסיפים את הגדרת dependencies הבאה לקובץ ההגדרות של ה-build:

YAML

dependencies:
- genericArtifact:
    resource: RESOURCE
    destPath: PATH

JSON

{
  "dependencies": [
    {
      "genericArtifact": {
        "resource": "RESOURCE",
        "destPath": "PATH"
      }
    }
  ]
}

כאשר:

  • RESOURCE היא הכתובת המלאה של הארטיפקט הכללי במאגר הכללי של Artifact Registry, בפורמט הבא:

    projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/packages/PACKAGE/versions/VERSION

    מומלץ מאוד לכלול את טביעת האצבע של הארטיפקט בכתובת המשאב, כדי ש-Cloud Build יוכל לאמת שההפניה לארטיפקט היא בלתי ניתנת לשינוי. גרסת חבילה עם טביעת אצבע מצורפת מפורמטת באופן הבא:

    VERSION@dirsum_sha256=HASH_VALUE

    כדי למצוא את טביעת האצבע של ארטיפקט במאגר Artifact Registry, אפשר לעיין במאמר בנושא אחזור טביעת האצבע של גרסת חבילה במאגר.

  • PATH היא הכתובת של התיקייה שאליה Cloud Build מוריד את החבילה מהמאגר. אם התיקייה עדיין לא קיימת, Cloud Build יוצר אותה באופן אוטומטי.

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