יצירה ועדכון של מאגר

בדף הזה מוסבר איך ליצור ולעדכן מאגר באמצעות ממשק האינטרנט של Secure Source Manager או Secure Source Manager API.

אם עדיין לא יצרתם מופע של Secure Source Manager, תוכלו לקרוא את המאמר יצירת מופע של Secure Source Manager כדי להתחיל.

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

  1. יוצרים מופע של Secure Source Manager או מבקשים גישה למופע קיים. מידע נוסף זמין במאמר יצירת מופע של Secure Source Manager.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. מתקינים את הרכיב beta Google Cloud CLI:
    gcloud components install alpha

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירת מאגר, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

במאמרים בקרת גישה באמצעות IAM והענקת גישה של משתמשים למופע מוסבר איך נותנים תפקידים ב-Secure Source Manager.

יצירת מאגר

ממשק אינטרנט

  1. כדי לגשת למופע של Secure Source Manager דרך ממשק האינטרנט שלו, מעתיקים את כתובת ה-URL הבאה לסרגל הכתובות בדפדפן.

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    מחליפים את מה שכתוב בשדות הבאים:

    • INSTANCE_ID בשם המכונה.
    • PROJECT_NUMBER עם מספר הפרויקט של המופע Google Cloud. מידע על זיהוי פרויקטים זמין במאמר זיהוי פרויקטים.
    • LOCATION עם האזור של המכונה.

  2. במקרה הצורך, מאמתים באמצעות פרטי הכניסה של Secure Source Manager.

  3. בתפריט הניווט, לוחצים על הסמל + Create new repository (יצירת מאגר חדש).

  4. ממלאים את פרטי המאגר:

    1. מזהה המאגר: מזינים שם למאגר.

    2. תיאור: אופציונלי: מזינים תיאור של המאגר.

    3. Default branch: השם של ענף ברירת המחדל.

  5. חשבון שירות: אופציונלי: מזינים את חשבון השירות שאותו רוצים לשייך למאגר. חשבון השירות הזה שמשתמש מנהל משמש לשילובים כמו Cloud Build. מידע נוסף זמין במאמר איך מתחברים ל-Cloud Build.

  6. Initialize repository (הפעלת מאגר): אופציונלי: בוחרים באפשרות הזו אם רוצים להפעיל את המאגר ולהוסיף קבצים מסוג .gitignore, רישיון ו-README.

  7. .gitignore: אופציונלי: בוחרים אילו קבצים לא לעקוב אחריהם באמצעות תבניות בתפריט הנפתח.

  8. license (רישיון): אופציונלי: בוחרים רישיון נפוץ מהתפריט הנפתח.

  9. לוחצים על יצירת מאגר.

gcloud

  1. כדי ליצור מאגר באמצעות CLI של gcloud, מריצים את הפקודה הבאה:

    gcloud source-manager repos create REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --instance=INSTANCE_ID \
        --description=DESCRIPTION \
        --default-branch=BRANCH \
        --gitignores=GITIGNORES \
        --license=LICENSE \
        --readme=README \
        --service-account=SERVICE_ACCOUNT
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REPOSITORY_ID בשם של המאגר.

    • LOCATION באזור שבו רוצים ליצור את המאגר. מידע נוסף על מיקומים נתמכים זמין במאמר מיקומים.

    • PROJECT_ID במזהה הפרויקט של מופע Secure Source Manager שבו רוצים ליצור את המאגר.

    • INSTANCE_ID עם מזהה המכונה של המכונה שבה אתם יוצרים את המאגר. כדי לראות את רשימת המופעים של Secure Source Manager בפרויקט, אפשר לעיין במאמר בנושא הצגה של רשימת מופעים.

    • DESCRIPTION עם תיאור של המאגר. הפעולה הזו אופציונלית ואפשר לדלג עליה.

    • BRANCH בשם ברירת המחדל של הענף. השדה הזה אופציונלי ואפשר להשמיט אותו. אם לא מגדירים שם ענף, ברירת המחדל היא main.

    • GITIGNORES עם רשימה מופרדת בפסיקים של שמות תבניות של gitignore. הפעולה הזו אופציונלית ואפשר לדלג עליה. רשימה מלאה של התבניות הזמינות

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

    • README עם default כדי ליצור קובץ README מהתבנית שמוגדרת כברירת מחדל. הפעולה הזו אופציונלית ואפשר לדלג עליה. אם לא מציינים קובץ README, הוא לא נוצר.

    • SERVICE_ACCOUNT מחליפים בכתובת האימייל של חשבון השירות שרוצים לשייך למאגר. השדה הזה אופציונלי ואפשר להשמיט אותו.

API

  1. כדי ליצור מאגר באמצעות קריאה ל-REST, מריצים את הפקודה הבאה:

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories?repository_id=REPOSITORY_ID \
        -d '{
          "instance": "projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID",
          "serviceAccount": "SERVICE_ACCOUNT"
        }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REGION בשם האזור של מופע Secure Source Manager. מידע נוסף על מיקומים נתמכים זמין במאמר מיקומים.
    • INSTANCE_ID עם מזהה המופע של Secure Source Manager.
    • PROJECT_ID במזהה הפרויקט של מופע Secure Source Manager. מידע נוסף על המקום שבו אפשר למצוא את מזהה הפרויקט זמין במאמר זיהוי פרויקטים.
    • REPOSITORY_ID בשם של המאגר.
    • SERVICE_ACCOUNT בכתובת האימייל של חשבון השירות שרוצים לשייך למאגר.

    אפשר לציין ערכים נוספים באמצעות דגל הנתונים של HTTP POST, -d'{}' כולל אתחול המאגר, הוספה של קובץ ספציפי .gitignore או רישיונות. מידע נוסף מופיע במאמרי העזרה.

    אם רוצים שהפלט יהיה קריא לאנשים, אפשר להעביר אותו ל-JSON באמצעות json_pp.

    לדוגמה:

    curl \
        -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/my-project-id/locations/us-central1/repositories?repository_id=my-repo \
        -d '{
          "instance": "projects/my-project-id/locations/us-central1/instances/prod-test-instance",
          "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
          "initialConfig": {
            "defaultBranch": "main"
          }
        }' | json_pp
    

    התגובה תיראה כך:

    {
      "name": "operations/266bf4c7-13fe-11ed-be24-da823b7355d0",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
        "createTime": "2022-08-04T14:02:59.810496928Z",
        "endTime": "2022-08-04T14:03:00.558354528Z",
        "target": "projects/654987321654/locations/us-central1/repositories/my-repo",
        "verb": "create",
        "apiVersion": "v1"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Repository",
        "name": "projects/my-project-id/locations/us-central1/repositories/my-repo",
        "instance": "projects/654987321654/locations/us-central1/instances/prod-test-instance",
        "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
        "createTime": "2022-08-04T14:03:00Z",
        "uris": {
          "html": "https://prod-test-instance-654987321654.us-central1.sourcemanager.dev/my-project-id/my-repo",
          "gitHttps": "https://prod-test-instance-654987321654-git.us-central1.sourcemanager.dev/my-project-id/my-repo.git"
        }
    }
    

    כאשר:

    • 654987321654 הוא מספר הפרויקט של המאגר.
    • my-project-id הוא מזהה הפרויקט של המאגר.
    • my-repo הוא REPOSITORY_ID שהגדרתם בפקודת היצירה. השדה uris מכיל את כתובות ה-URL לגישה למאגר באמצעות דפדפן האינטרנט או באמצעות גישת HTTPS לפרוטוקול Git.
  2. ניגשים למאגר החדש באמצעות ה-URI של ה-HTML בתשובה. בממשק האינטרנט של Secure Source Manager יש תמיכה בבדיקת קוד, במעקב אחר בעיות ובבקשות משיכה.

המאגר נוצר במופע של Secure Source Manager.

כשיוצרים מאגר חדש, מקבלים את התפקיד 'אדמין במאגר' (roles/securesourcemanager.repoAdmin). יכול להיות שיחלפו עד 2 דקות עד שההרשאה החדשה של IAM תתעדכן. לכן, אם מופיעה שגיאת הרשאות כשמנסים לגשת למאגר אחרי שהוא נוצר, צריך להמתין כמה דקות ולנסות שוב.

מאגרי קוד שיצרתם מופיעים בממשק האינטרנט של Secure Source Manager בדף My repositories (מאגרי הקוד שלי).

עדכון מאגר

ממשק אינטרנט

  1. עוברים לדף המאגר בממשק האינטרנט של Secure Source Manager.
  2. בתפריט הניווט, לוחצים על הגדרות המאגר.
  3. בקטע Basic settings (הגדרות בסיסיות), מזינים את כתובת האימייל של חשבון השירות בשדה Service account (חשבון שירות).
  4. לוחצים על שמירת השינויים.

gcloud

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

    gcloud source-manager repos update REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --service-account=SERVICE_ACCOUNT
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REPOSITORY_ID בשם המאגר שרוצים לעדכן.
    • LOCATION באזור שבו נמצא המאגר.
    • PROJECT_ID במזהה הפרויקט.
    • SERVICE_ACCOUNT בכתובת האימייל של חשבון השירות שרוצים לשייך למאגר.

API

  1. כדי לעדכן את חשבון השירות של המאגר באמצעות קריאה ל-REST, מריצים את הפקודה הבאה:

    curl --request PATCH \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_ID?updateMask=serviceAccount \
        -d '{"serviceAccount": "SERVICE_ACCOUNT"}'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID במזהה הפרויקט.
    • REGION עם האזור.
    • REPOSITORY_ID במזהה המאגר.
    • SERVICE_ACCOUNT מחליפים בכתובת האימייל של חשבון השירות.

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