זמן הריצה של Go

סביבת זמן הריצה של Go היא מחסנית התוכנה שאחראית להתקנת קוד האפליקציה ויחסי התלות שלה, ולאחר מכן להפעלת האפליקציה בסביבה הגמישה.

גרסאות Go

‫Go 1.26 משתמש בחבילות buildpack. במאמר הזה מופיעה רשימה מלאה של גרסאות Go הנתמכות וגרסאות Ubuntu התואמות שלהן.

כדי להשתמש בגרסת Go נתמכת, צריך:

  • מתקינים את gcloud CLI גרסה 420.0.0 ואילך. אפשר לעדכן את כלי ה-CLI באמצעות הפקודה gcloud components update. כדי לראות את הגרסה המותקנת, אפשר להריץ את הפקודה gcloud version.

  • מומלץ להשתמש בקובץ go.mod לניהול יחסי תלות. כדי להתקין תלות במהלך הפריסה, צריך לכלול קובץ go.mod באותה תיקייה שבה נמצא קובץ app.yaml.

    לדוגמה, מבנה התיקיות של האפליקציה עם go.mod צריך לייצג:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • כדי לציין מערכת הפעלה, צריך לכלול את ההגדרות runtime_config ו-operating_system בקובץ app.yaml.

  • אפשר גם לציין גרסת זמן ריצה על ידי הוספת ההגדרה runtime_version לקובץ app.yaml. כברירת מחדל, נעשה שימוש בגרסת Go העדכנית ביותר אם לא מציינים את ההגדרה runtime_version.

דוגמאות

  • כדי לציין Go 1.26 ב-Ubuntu 24:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu24"
        runtime_version: "1.26"
    
  • כדי לציין את גרסת Go העדכנית ביותר שנתמכת ב-Ubuntu 24:

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu24"
    

האפליקציה שלכם משתמשת בגרסה היציבה העדכנית של הגרסה שצוינה בקובץ app.yaml. ‫App Engine מתעדכן אוטומטית לגרסאות תיקון חדשות, אבל הוא לא מתעדכן אוטומטית לגרסה הראשית.

לדוגמה, יכול להיות שהאפליקציה שלכם נפרסה בגרסה Go 1.18.10, ומאוחר יותר היא תתעדכן אוטומטית לגרסה Go 1.18.11, אבל היא לא תתעדכן אוטומטית לגרסה הראשית Go 1.19.

אם בוחרים ב-Go 1.26 בקובץ app.yaml, מקבלים את הגרסה העדכנית ביותר של Go 1.26 שזמינה.patch

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu24"
      runtime_version: "1.26"

מידע נוסף זמין במאמר בנושא app.yaml.

גרסאות קודמות של זמן הריצה

כדי להשתמש ב-Go בגרסה 1.15 ומטה, צריך לציין גרסה בהגדרה runtime באמצעות הפורמט go1.x בקובץ app.yaml. לדוגמה:

  runtime: go1.14
  env: flex

אם לא מציינים גרסה, המערכת תבחר אוטומטית את גרסת ברירת המחדל של go1.11.

האפליקציה שלכם משתמשת בגרסה היציבה העדכנית של הגרסה שצוינה בקובץ app.yaml. ‫App Engine מתעדכן אוטומטית לגרסאות תיקון חדשות, אבל הוא לא מתעדכן אוטומטית לגרסה הראשית.

לדוגמה, יכול להיות שהאפליקציה שלכם נפרסה ב-Go 1.14.10, ומאוחר יותר היא תתעדכן אוטומטית ל-Go 1.14.11, אבל היא לא תתעדכן אוטומטית לגרסה הראשית Go 1.15.

אם בוחרים בגרסת זמן הריצה של Go‏ go1.15 בקובץ app.yaml, הגרסה האחרונה של 1.15 תהיה זמינה, לדוגמה, 1.15.15.

  runtime: go1.15
  env: flex

תמיכה בסביבות זמן ריצה אחרות של Go

אם אתם צריכים להשתמש בגרסת Go שלא נתמכת, אתם יכולים ליצור סביבת ריצה בהתאמה אישית ולבחור תמונת בסיס תקינה עם גרסת Go שאתם צריכים.

לגבי תמונות בסיס שסופקו על ידי Google או תמונות בסיס של Docker Go, אפשר לעיין במאמר יצירת סביבות ריצה בהתאמה אישית.

ייבוא חבילות

הקוד עובר קומפילציה כשפורסים את האפליקציה ב-App Engine. כשמריצים את פקודת הפריסה, התלויות של האפליקציה נאספות קודם מ-GOPATH המקומי, ואז כולן נשלחות לשרת הבנייה. אם יש תלות חסרה, למשל ספריות של צד שלישי, ה-build ייכשל.

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

הארכת זמן הריצה

הוראות להרחבה ולהתאמה אישית של זמן הריצה של Go זמינות במאמר Go runtime builder on GitHub (כלי ליצירת זמן ריצה של Go ב-GitHub).

שרת מטא-נתונים

כל מופע של האפליקציה יכול להשתמש בשרת המטא-נתונים של Compute Engine כדי לשלוח שאילתות לגבי המופע, כולל שם המארח, כתובת ה-IP החיצונית, מזהה המופע, מטא-נתונים מותאמים אישית ופרטי חשבון השירות. ב-App Engine אי אפשר להגדיר מטא-נתונים מותאמים אישית לכל מופע, אבל אפשר להגדיר מטא-נתונים מותאמים אישית ברמת הפרויקט ולקרוא אותם ממופעי App Engine וממופעי Compute Engine.

משתמשים בחבילה cloud.google.com/go/compute/metadata כדי לגשת לשרת המטא-נתונים.