אוטומציה של גרסאות 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: שם הקטגוריה של Cloud Storage workdir.
  • 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.

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