בדף הזה מוסבר איך לפרוס אפליקציות ב-App Engine באמצעות Cloud Build. אם אתם חדשים ב-Cloud Build, כדאי קודם לקרוא את המדריכים למתחילים ואת הסקירה הכללית על הגדרת build.
App Engine היא פלטפורמה מנוהלת ללא שרת (serverless) לפיתוח ולאירוח של אפליקציות אינטרנט בהיקף נרחב. מידע נוסף על App Engine זמין במאמרי העזרה של App Engine.
לפני שמתחילים
מפעילים את App Engine API:
חשוב להכין את קוד המקור של האפליקציה. קוד המקור צריך להיות מאוחסן במאגר כמו GitHub או Bitbucket.
כדי להריץ את הפקודות
gcloudשבדף הזה, צריך להתקין את Google Cloud CLI.
הרשאות נדרשות לניהול זהויות והרשאות גישה (IAM)
-
במסוף Google Cloud , נכנסים לדף settings Cloud Build Permissions:
בחשבון השירות שצוין ב-Cloud Build או בחשבון השירות שמוגדר כברירת מחדל ב-Cloud Build, מגדירים את הסטטוס של התפקידים הבאים למופעל:
- App Engine Admin (
roles/appengine.appAdmin) | מאפשר ל-Cloud Build לפרוס גרסאות חדשות ב-App Engine.- בחלונית Assign Service Account User Role (הקצאת התפקיד Service Account User), בוחרים חשבון שירות להתחזות אליו ולוחצים על Grant Permission (מתן הרשאה).
- אדמין לניהול נפח האחסון (
roles/storage.admin) | מאפשר קריאה וכתיבה מ-Cloud Storage. - כותב של Artifact Registry (
roles/artifactregistry.writer) | מאפשר שליפת תמונות מ-Artifact Registry וכתיבה ב-Artifact Registry. - כותב יומנים (
roles/logging.logWriter) | מאפשר לכתוב רשומות ביומן ב-Cloud Logging. - עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) | מאפשר לחשבון השירות להריץ בנייה.
- App Engine Admin (
הגדרת הפריסה
באמצעות Cloud Build אפשר להשתמש בכל קובץ אימג' של קונטיינר שזמין לציבור כדי להריץ את המשימות. כדי לעשות את זה, מציינים את התמונה ב-step build בקובץ ההגדרות של Cloud Build.
App Engine מספק את הפקודה gcloud app deploy, שיוצרת קובץ image עם קוד המקור שלכם ופורסת את קובץ ה-image הזה ב-App Engine. אתם יכולים להשתמש ב-cloud-sdk
image
כשלב build בקובץ ההגדרות כדי להפעיל פקודות gcloud בתוך האימג'.
הארגומנטים שמועברים לשלב הבנייה הזה מועברים ישירות ל-CLI של gcloud, כך שאפשר להריץ כל פקודה של gcloud בתמונה הזו.
כדי לפרוס אפליקציה ב-App Engine, פועלים לפי השלבים הבאים:
יוצרים קובץ תצורה של Cloud Build בשם
cloudbuild.yamlאוcloudbuild.json.בקובץ התצורה:
- מוסיפים שדה
nameכדי לציין את שלב הבנייהcloud-sdk. - מוסיפים שדה
entrypointכדי להשתמש בכליbashכשמפעילים אתcloud-sdk. בשדה
args, מפעילים את הפקודהgcloud app deployומגדיריםtimeoutלשימוש ב-App Engine כשהוא מפעיל את Cloud Build. הדרישה הזו קיימת כי ל-Cloud Build יש פסק זמן (timeout) של 10 דקות כברירת מחדל, והפריסות של App Engine עשויות להימשך יותר זמן. הגדרה של זמן קצוב ארוך יותר תבטיח שלא יתרחש פסק זמן ב-build אם הפעולהgcloud app deployתימשך יותר מ-10 דקות.שגיאות של זמן קצוב לתפוגה כשמשתמשים בסביבה הסטנדרטית של App Engine: אפשר להגדיר זמנים קצובים לתפוגה רק כשמשתמשים בסביבה הגמישה של App Engine, כפי שמתואר כאן. בסביבה הרגילה של App Engine אי אפשר להגדיר את הזמן הקצוב לתפוגה של ה-build. אם אתם משתמשים ב-Cloud Build כדי לפרוס בסביבה הרגילה של App Engine, והגרסה שלכם נכשלת עם שגיאת זמן קצוב לתפוגה, מומלץ להשתמש בסביבה הגמישה של App Engine או ב-Cloud Run במקום בסביבה הרגילה של App Engine.
מוסיפים ערך build
timeoutשל יותר מ-10 דקות.
YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }- מוסיפים שדה
מריצים את הפקודה build, כאשר
SOURCE_DIRECTORYהוא הנתיב או כתובת ה-URL של קוד המקור ו-REGIONהוא אחד האזורים הנתמכים של build כדי להריץ את הפקודה build:gcloud builds submit --region=REGION SOURCE_DIRECTORY
פריסה רציפה
אתם יכולים ליצור טריגרים של Cloud Build כדי לבצע אוטומציה של פריסת התוכנה שלכם ב-App Engine. אתם יכולים להגדיר את הטריגרים כך שיבנו ויפרסו תמונות בכל פעם שתעדכנו את קוד המקור.
כדי להפוך את הפריסה ב-App Engine לאוטומטית:
מאחזרים את הפקודה
gcloud app deployומעבירים אותה לקובץ התצורה במאגר:YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }יוצרים טריגר לפיתוח גרסת Build באמצעות קובץ ההגדרות שנוצר בשלב הקודם:
פותחים את הדף Triggers במסוף Google Cloud :
בוחרים את הפרויקט מהתפריט הנפתח לבחירת פרויקט בחלק העליון של הדף.
לוחצים על פתיחה.
לוחצים על Create trigger (יצירת ביטוי להפעלה).
בדף Create trigger, מזינים את ההגדרות הבאות:
מזינים שם לטריגר.
בוחרים את אירוע המאגר כדי להפעיל את הטריגר.
בוחרים את המאגר שמכיל את קובץ ההגדרות של קוד המקור וה-build.
מציינים את הביטוי הרגולרי לשם הענף או התג שיפעיל את הטריגר.
Configuration: בוחרים את קובץ הגדרות ה-build שיצרתם קודם.
לוחצים על יצירה כדי לשמור את טריגר לפיתוח גרסת Build.
בכל פעם שתעלו קוד חדש למאגר, תתחילו באופן אוטומטי ליצור גרסת build ולפרוס אותה ב-App Engine.
מידע נוסף על יצירת טריגרים של Cloud Build זמין במאמר בנושא יצירה וניהול של טריגרים של Build.
המאמרים הבאים
- איך פורסים ב-Cloud Run
- איך מבצעים פריסות כחולות-ירוקות ב-Compute Engine
- איך פורסים ב-GKE
- איך פורסים ב-Cloud Run functions
- איך פורסים ב-Firebase
- איך פותרים בעיות שקשורות לבנייה