ציון יחסי תלות

אפשר להשתמש בכל חבילה שתואמת ל-Linux/amd64 עם מופעים שפועלים בסביבה הגמישה של App Engine. ההוראות האלה מניחות שאתם משתמשים בפקודה go get כדי לקבל את החבילות ישירות ממאגרים נתמכים, כמו GitHub,‏ Bitbucket,‏ LaunchPad ועוד.

החל מגרסה 1.22 של Go ואילך:

  • אי אפשר להשתמש ב-go get מחוץ למודול במצב GOPATH מדור קודם (GO111MODULE=off). למידע נוסף, ראו כלים.

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

הצהרה וניהול של יחסי תלות

אפליקציות Go מאורגנות בחבילות שמשקפות את מבנה התיקיות של קובצי המקור. כשמשתמשים בהצהרת ייבוא, הנתיבים היחסיים בייבוא מפורשים. נתיבי ייבוא תקינים הם נתיבים מלאים שמוגדרים ביחס לספריית המשנה src של כל הספריות שצוינו ב-GOPATH.

לדוגמה, נניח שיש אפליקציה שבה מוגדרים הדברים הבאים:

  • מודול GOPATH:

     export GOPATH=/home/fred/go.
    
  • src1-1.go קובץ:

    import "foo/bar"
    
  • ה-CLI של gcloud מחפש את חבילת foo/bar במיקום /home/fred/go/src/foo/bar כשמריצים או פורסים את האפליקציה.

אם כוללים את מקורות החבילה ב-GOPATH, צריך להקפיד לא למקם את קוד המקור בספרייה של האפליקציה שבה נמצא קובץ GOPATH.app.yaml במקרה כזה, יכולות להתרחש בעיות לא בולטות כי יכול להיות שחבילה תיטען פעמיים: פעם אחת עבור הנתיב ביחס לספרייה של שירות, ופעם נוספת עבור הנתיב המלא. כדי למנוע בעיות, ה-CLI של gcloud יסרוק את הספרייה של האפליקציה ואת GOPATH, ואז ידווח על שגיאה אם יזוהה קונפליקט.

כדי לקבל את התוצאות הטובות ביותר, מומלץ:

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

הורדת החבילות הנדרשות

אפשר להשתמש בפקודה go get כדי להוריד חבילות. לדוגמה, כדי להוריד את packagename מ-GitHub my_repo:

go get github.com/my_repo/packagename

פריסה ב-App Engine

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