אוטומציה של גרסאות build באירועים של מאגר

אתם יכולים להגדיר צינורות Image Builder אוטומטיים שפועלים בכל פעם שאתם מעלים שינויים בהגדרות למאגר Git, למשל כשמעלים ל-main. אוטומציה של גרסאות build באירועים של מאגרים מבטיחה ש-Cloud Build יאמת, יבנה ויפרסם באופן מיידי את תמונות מערכת ההפעלה המותאמות אישית שלכם ב-Compute Engine וב-Artifact Registry אחרי ביקורת קוד או מיזוג.

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

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

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

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

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

הגדרת אוטומציה במאגר

אפשר להגדיר טריגרים של אירועים במאגר באמצעות ה-CLI של gcloud או Terraform. בוחרים באחת מהכרטיסיות הבאות כדי להגדיר טריגרים של מאגר:

gcloud

אפשר ליצור טריגר אוטומטי למאגר באמצעות הפקודה gcloud builds triggers create והפניה ישירות לקישור המאגר המקושר מהדור השני (--repository).

gcloud builds triggers create repository \
    --name="TRIGGER_NAME" \
    --repository="projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME" \
    --branch-pattern="^main$" \
    --build-config="CLOUDBUILD_YAML_PATH" \
    --service-account="projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL" \
    --substitutions="_GCS_WORKDIR=gs://STAGING_BUCKET/workdir/,_IMAGE_BUILDER_CONFIG_PATH=RECIPE_PATH,_SERVICE_ACCOUNT=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL,_IMAGE_OUTPUT_PATH=image-builder/binaryOut" \
    --region=REGION \
    --project=PROJECT_ID

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

  • ‫TRIGGER_NAME: השם של הטריגר, לדוגמה, git-push-custom-os-builder.
  • PROJECT_ID: מזהה הפרויקט.
  • ‫REGION: האזור שבו מתארח חיבור המאגר ושבו מופעלת משימת צינור ההתאמה האישית של התמונה, לדוגמה, us-central1.
  • ‫CONNECTION_NAME: השם של חיבור Developer Connect, לדוגמה, github-connection.
  • ‫REPO_NAME: השם של מאגר Git המקושר.
  • ‫CLOUDBUILD_YAML_PATH: הנתיב היחסי אל cloudbuild.yaml בספרייה המקומית.
  • SERVICE_ACCOUNT_EMAIL: כתובת האימייל המדויקת של חשבון השירות של שירות ה-build.
  • ‫STAGING_BUCKET: שם הקטגוריה של workdir ב-Cloud Storage.
  • ‫RECIPE_PATH: הנתיב היחסי אל imagebuilder.yaml במאגר.

Terraform

כדי להגדיר טריגר אוטומטי למאגר באמצעות Terraform, מבצעים את השלבים הבאים:

  1. מוסיפים את משאב הטריגר לקובץ ההגדרות main.tf:

    resource "google_cloudbuild_trigger" "repository_trigger" {
      name        = "TRIGGER_NAME"
      location    = "REGION"
      project     = "PROJECT_ID"
      description = "Triggers custom OS image builds on repository push events"
    
      repository_event_config {
        repository = "projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME"
        push {
          branch = "^main$"
        }
      }
    
      filename = "CLOUDBUILD_YAML_PATH"
    
      substitutions = {
        _GCS_WORKDIR               = "gs://STAGING_BUCKET/workdir/"
        _IMAGE_BUILDER_CONFIG_PATH = "RECIPE_PATH"
        _SERVICE_ACCOUNT           = "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL"
      }
    }
    

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

    • ‫TRIGGER_NAME: השם של הטריגר, לדוגמה, git-push-custom-os-builder.
    • PROJECT_ID: מזהה הפרויקט.
    • ‫REGION: Cloud de Confiance האזור שבו מתארחת ההתחברות למאגר, לדוגמה, us-central1.
    • ‫CONNECTION_NAME: השם של חיבור Developer Connect, לדוגמה, github-connection.
    • ‫REPO_NAME: השם של מאגר Git המקושר.
    • ‫CLOUDBUILD_YAML_PATH: הנתיב היחסי אל cloudbuild.yaml בספרייה המקומית.
    • ‫STAGING_BUCKET: שם קטגוריית הביניים שלכם ב-Cloud Storage.
    • ‫RECIPE_PATH: הנתיב היחסי אל imagebuilder.yaml במאגר.
    • ‫SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות שלכם לבנייה.
  2. פורסים את התצורה המעודכנת של Terraform:

    terraform plan
    terraform apply
    

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

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