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

בדף הזה מוסבר איך ליצור ולעדכן מאגר באמצעות ממשק האינטרנט של 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. Service account: אופציונלי: מזינים את חשבון השירות שרוצים לשייך למאגר. חשבון השירות הזה שמשתמש מנהל משמש לשילובים כמו 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 תתעדכן, לכן אם מופיעה שגיאת הרשאות כשמנסים לגשת למאגר אחרי שהוא נוצר, צריך להמתין כמה דקות ולנסות שוב.

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

עדכון מאגר

ממשק אינטרנט

  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 בכתובת האימייל של חשבון השירות.

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