ניהול קוד באמצעות מאגרי Git ב-BigQuery Studio
מאגרי Git ב-BigQuery Studio מאפשרים לכם לנהל גרסאות של סקריפטים ב-SQL, קובצי Notebook ונכסי קוד אחרים ישירות בדפדפן הקבצים של BigQuery Studio. אתם יכולים לשכפל מאגרי Git מרוחקים, לנהל הסתעפויות ולבצע פעולות Git בלי לצאת ממסוף Google Cloud .
בהשוואה למאגרים קלאסיים, השילוב הזה מספק חוויה יעילה יותר שמבוססת על תיקיות, בתיקיית הבסיס של המשתמש בחלונית הימנית. אתם יכולים לבצע פעולות בנכסי הקוד כמו קבצים וספריות רגילים, תוך שמירה על החיבור למאגר Git מרוחק.
מגבלות
- מאגרי Git ב-BigQuery Studio מוגבלים להקשר של תיקיית הבסיס של המשתמש, ומיועדים לשימוש פרטי. אל תשתפו את המאגרים האלה עם משתמשים אחרים. למרות שהמאגרים האלה מופיעים בתיקיית הבסיס של המשתמש (ייצוג וירטואלי של הנכסים בפרויקט), מבחינה טכנית הם נוצרים ברמת הפרויקט.
- אי אפשר להשתמש במחבר חשבון של Developer Connect עם שרת proxy של Git.
- פעולות של מערכת הקבצים במיקום הטעינה צורכות מכסה של Dataform.
- מאגרים עם הרבה קבצים, קבצים גדולים, הרבה ענפים או היסטוריית commit עמוקה ומורכבת דורשים יותר זמן לשכפול. יכול להיות שפעולת השכפול תחרוג מזמן הקצוב לתפוגה של הפעולה, והמאגר לא ייווצר. כדי לקצר את זמן השכפול של מאגרים עם היסטוריית commit ארוכה, אתם יכולים ליצור עותק מקוצר. אפשר לאחזר עוד פריטי commit בהמשך לפי הצורך.
- הגודל של קובצי Notebook שמאוחסנים ב-mount של מאגר Git ב-BigQuery Studio לא יכול להיות יותר מ-30MB. אם הקבצים גדולים מ-30MB, שמרו אותם באחסון המקומי של סביבת זמן הריצה של Colab, מחוץ למיקום שבו טענתם את התיקייה.
כשמבצעים שינויים במאגר Git מחוץ לנקודת הטעינה, למשל עריכה או שינוי שם של קבצים בחלונית הימנית, יכול להיות שיעברו עד 60 שניות עד שהשינויים האלה יופיעו בנקודת הטעינה בסביבת זמן הריצה של ה-Notebook. כדי לשנות את משך הזמן הזה, מעבירים את הפרמטר
CACHE_TTL_SECONDSל-constructor:FuseWidget(CACHE_TTL_SECONDS=NUMBER)מחליפים את
NUMBERבמספר השניות שבהן המטמון יישאר בתוקף. אם מקטינים את הערך הזה, תדירות הסנכרון עולה והמכסה של Dataform מנוצלת מהר יותר.
לפני שמתחילים
מפעילים את Developer Connect API בפרויקט ב- Google Cloud .
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לניהול קוד באמצעות מאגרי Git ב-BigQuery Studio, צריך לבקש מהאדמין להקצות לכם את התפקיד משתמש OAuth ב-Developer Connect (roles/developerconnect.oauthUser) ב-IAM בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד המוגדר מראש הזה כולל את ההרשאות שנדרשות כדי לנהל קוד באמצעות מאגרי Git ב-BigQuery Studio. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לנהל קוד באמצעות מאגרי Git ב-BigQuery Studio, נדרשות ההרשאות הבאות:
-
resourcemanager.projects.get -
resourcemanager.projects.list -
developerconnect.operations.list -
developerconnect.operations.get -
developerconnect.locations.list -
developerconnect.locations.get -
developerconnect.users.startOAuth -
developerconnect.users.finishOAuth -
developerconnect.users.fetchAccessToken -
developerconnect.users.getSelf -
developerconnect.users.deleteSelf -
developerconnect.accountConnectors.get -
developerconnect.accountConnectors.list -
developerconnect.accountConnectors.gitProxyUse -
developerconnect.accountConnectors.httpProxyUse -
developerconnect.accountConnectors.gitProxyRead -
developerconnect.accountConnectors.gitProxyWrite -
developerconnect.accountConnectors.httpProxyRead -
developerconnect.accountConnectors.httpProxyWrite -
developerconnect.accountConnectors.fetchUserRepositories
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
שיקולי אבטחה למאגרים
נכסי הקוד ב-BigQuery מופעלים על ידי Dataform, ולכן חשוב להביא בחשבון את ההשלכות הבאות על האבטחה של משתמשים שיש להם גישה לנכסים האלה:
- ההרשאות ברמת הפרויקט ב-Dataform קובעות את הרשאות הגישה לנכסי הקוד. משתמשים עם ההרשאה
dataform.repositories.list– שכלולה בתפקידים סטנדרטיים ב-BigQuery כמו BigQuery Job User, BigQuery Studio User ו-BigQuery User – יכולים לראות את כל נכסי הקוד בחלונית Explorer של הפרויקט ב- Google Cloud , גם אם הם לא יצרו את הנכסים האלה או שהנכסים האלה לא שותפו איתם. כדי להגביל את החשיפה, אתם יכולים ליצור תפקידים בהתאמה אישית שלא כוללים את ההרשאהdataform.repositories.list. - משתמשים שיכולים לערוך את הנכסים האלה יכולים לגשת לכל הסודות ששותפו עם סוכן השירות של Dataform. כדי לאבטח את פרטי הכניסה, צריך להגביל את הגישה ליצירה ולעריכה למשתמשים מהימנים, ולהגביל את הגישה של סוכן השירות של Dataform לסודות. מידע נוסף זמין במאמר גישה לסודות במהלך התקנת החבילה.
מידע נוסף זמין במאמר שיקולי אבטחה לגבי הרשאות ב-Dataform.
יצירת מאגר Git ב-BigQuery Studio
כשיוצרים מאגר Git, צריך להביא בחשבון את הדרישות הבאות:
- אם מאגר ה-Git המרוחק לא פתוח לאינטרנט הציבורי, למשל אם הוא נמצא מאחורי חומת אש, יכול להיות שלא תצליחו לקשר אותו למאגר Git. במקרה כזה, צריך להוסיף לכללים של חומת האש את טווחי כתובות ה-IP הנדרשים לתעבורת נתונים יוצאת ב-Dataform כדי לאפשר חיבורים למאגרים מרוחקים מוגנים.
- כדי ליצור מאגר Git שמחובר למאגר Git מרוחק שלא נכלל ברשימת ההיתרים של מדיניות הארגון
dataform.restrictGitRemotes, קודם צריך להוסיף את מאגר ה-Git המרוחק לרשימהallowedValuesשבמדיניות, ואז ליצור את מאגר ה-Git. מידע נוסף זמין במאמר הגבלת מאגרים מרוחקים.
כדי ליצור מאגר Git:
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית השמאלית, לוחצים על Files כדי לפתוח את דפדפן הקבצים.
אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
ליד צומת הבסיס של המשתמש, לוחצים על View actions > Create > Git repository.
מזינים את כתובת ה-URL של מאגר Git המרוחק.
המערכת של BigQuery Studio מזהה אם יש מחבר קיים לחשבון Developer Connect. יש לכם כמה אפשרויות:
- אם נמצא מחבר חשבון, השם המוצג של מאגר Git ימולא מראש. אפשר לערוך את הערכים האלה.
- אם אין מחבר חשבונות, לוחצים על Create account connector כדי ליצור מחבר חשבונות חדש.
- אם אתם מעדיפים לא להשתמש במחבר של חשבון Developer Connect, לחצו על Use different connection type כדי להתחבר באמצעות HTTPS או SSH.
אופציונלי: כדי ליצור מאגר של עותק מקוצר עם היסטוריית שינויים מוגבלת, לוחצים על Advanced options ובוחרים בתיבת הסימון Shallow clone.
- בשדה Depth, מזינים את מספר השינויים שרוצים לאחזר בהיסטוריית השינויים המוגבלת.
לוחצים על Connect.
עריכת קובץ
כדי לערוך קובץ, לוחצים על צומת קובץ – כמו סקריפט SQL או notebook – כדי לפתוח את הקובץ בכרטיסיית עריכה חדשה.
כל השינויים שתבצעו יישמרו באופן אוטומטי.
ניהול קבצים
אתם יכולים לבצע משימות ניהול רגילות באמצעות תפריט הפעולות שמשויך לכל פריט. כדי לגשת לאפשרויות האלה, לוחצים על פתיחת פעולות ליד כל ספרייה או קובץ.
ברמת הספרייה, אפשר לבצע את המשימות הבאות:
- יצירה במאגר: יצירת נכסי קוד חדשים, כולל שאילתות SQL, קובצי Notebook, קנבסי נתונים, הכנות של נתונים, קבצים או ספריות משנה.
- Upload to repository: ייבוא קבצים קיימים מהמכונה המקומית לספרייה שנבחרה.
- שינוי שם: שינוי השם של הספרייה.
- העברה: העברת הספרייה למיקום אחר. אפשר להעביר ספרייה רק למיקום אחר באותו מאגר Git. מידע נוסף זמין במאמר העברה או העתקה של קבצים וספריות.
- מחיקה: הסרה סופית של הספרייה וכל התוכן שלה מסביבת העבודה המקומית.
ברמת הקובץ, אתם יכולים לבצע את המשימות הבאות:
- פתיחה או פתיחה באמצעות: הצגת הקובץ בכלי העריכה שמוגדר כברירת מחדל או באפליקציה ספציפית, למשל סביבת Notebook ספציפית.
- שינוי שם: משנים את שם הקובץ.
- העתקה: יצירת עותק של הקובץ. אפשר להעתיק קבצים רק לספריות באותו מאגר Git.
- העברה: העברת הקובץ לספרייה אחרת באותו מאגר Git. מידע נוסף זמין במאמר העברה או העתקה של קבצים וספריות.
- הורדה: שמירת עותק של הקובץ במחשב המקומי.
- מחיקה: הסרת הקובץ מסביבת העבודה.
העברה או העתקה של קבצים וספריות
אתם יכולים להעביר או להעתיק קבצים וספריות, אבל הם חייבים להישאר באותו מאגר Git.
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית השמאלית, לוחצים על Files כדי לפתוח את דפדפן הקבצים.
מוצאים את הקובץ או הספרייה שרוצים להעביר או להעתיק.
לוחצים על פתיחת הפעולות > העברה או העתקה.
בתיבת הדו-שיח שמופיעה, בוחרים את ספריית היעד באותו מאגר Git.
לוחצים על העברה או על העתקה.
שמירה ודחיפה של השינויים
כדי לסנכרן את העריכות המקומיות עם המאגר המרוחק:
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Repository.
אופציונלי: מעבירים את העכבר מעל קובץ ששונה ולוחצים על View diff כדי לראות השוואה בין הגרסה המקומית לגרסה האחרונה שבוצעה לה העברה (commit).
בשדה Commit message, מזינים תיאור של השינויים.
לוחצים על Commit. השינויים נשמרים בהיסטוריית ה-Git של הענף המקומי.
לוחצים על Push to remote branch. השינויים מסונכרנים עם המאגר המרוחק.
רוצה לראות סניף חדש?
אתם יכולים לנהל סניפים מקומיים וליצור סניף מקומי חדש על סמך סניף מעקב מקומי או מרוחק קיים.
בכרטיסייה Repository, בקטע Branches, אתם יכולים לראות את ההסתעפויות המקומיות שהוצאתם. התווית CURRENT מציינת את הענף הפעיל, והתווית DEFAULT מציינת את ענף ברירת המחדל של המאגר.
כדי לעבור לענף חדש:
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Repository.
מרחיבים את הקטע Branches.
לוחצים על Open actions ליד הסתעפות, ואז על Check out new branch.
בתפריט Source branch, בוחרים את הענף שעליו רוצים לבסס את הענף החדש, לדוגמה
origin/main.בשדה Branch name, נותנים שם להסתעפות החדשה.
לוחצים על לתשלום. BigQuery Studio בודק קודם את הסתעפות המקור. אם שם הענף שצוין מציין ענף חדש, הוא נוצר על סמך המקור הזה. ההסתעפות החדשה הופכת להסתעפות הפעילה, והתוכן של מאגר Git מתעדכן באופן אוטומטי בהתאם למצב של ההסתעפות שהוצאה.
הצגת היסטוריית השמירות
אתם יכולים לראות את היסטוריית השינויים של ההסתעפות הפעילה. אם המאגר נוצר כעותק מקוצר, בחלונית Branch commit history יוצג באנר עם מידע שמציין שלמאגר יש היסטוריית שינויים מוגבלת. כדי להרחיב את ההיסטוריה המקומית, אפשר לאחזר עוד פקודות commit.
כדי לראות את היסטוריית השינויים:
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Repository.
לצד כפתור הפעולה הראשי של ניהול הגרסאות, לוחצים על החץ של התפריט הנפתח ואז על View commit history.
החלונית Branch commit history נפתחת ומוצגת בה היסטוריית השינויים של הענף הפעיל.
אופציונלי: כדי לאחזר עוד פריטי commit למאגר של עותק מקוצר, לוחצים על Fetch בחלונית Branch commit history.
בתיבת הדו-שיח Fetch (עותק מקוצר), בשדה Additional commits to fetch, מזינים את מספר הקומיטים הנוספים שרוצים לאחזר מההיסטוריה של המאגר.
אם תזינו
0, לא יאוחזרו עוד שינויים היסטוריים, אבל BigQuery Studio יבצע אחזור רגיל כדי לסנכרן הפניות ומטא-נתונים מרחוק.לוחצים על אחזור.
אפשר לחזור על השליפה לפי הצורך עד שכל השינויים יאוחזרו.
גישה לקובצי Notebook ב-mount של מאגר Git
כשאתם ניגשים ל-notebook מתוך מאגר Git ב-BigQuery Studio, אתם יכולים לטעון את מאגר ה-Git המארח לסביבת זמן הריצה של ה-notebook. הפעולה הזו יוצרת חיבור שגורם למאגר ה-Git המרוחק להופיע כאילו הוא מאגר מקומי בסביבת זמן הריצה של ה-Notebook. כך ה-notebook יכול לגשת ישירות לקבצים אחרים ולסקריפטים של שאילתות באותו מאגר, לקרוא אותם ולכתוב בהם.
טעינת המאגר של Git
כדי לטעון את מאגר Git, מריצים את קוד ה-Python הבא ב-notebook:
from google_dataform_fuse_widget import FuseWidget
FuseWidget()
כשה-Notebook מחובר ל-Mount, מתרחשים השינויים הבאים:
- ספריית העבודה הנוכחית של הסשן ב-notebook מתעדכנת בהתאם לנתיב היחסי שלה במאגר Git. כך אפשר לוודא שהגישה לקבצים לפי נתיב פועלת באופן אוטומטי.
- הנתיב של מאגר Git בסביבת זמן הריצה של ה-notebook מתווסף לנתיב המערכת של Python, וכך אפשר להשתמש בהצהרות ייבוא רגילות של Python כדי לטעון סקריפטים וקבצים של שאילתות ממאגר Git ישירות ל-notebook.
ניהול ההתקנה והחיבור
אתם יכולים להשתמש באמצעי הבקרה הבאים כדי לנהל את סביבת העבודה:
- Mount workspace: הפעולה הזו מתחילה את תהליך הטעינה של מאגר Git. ההרכבה היא משאב משותף, כך שאם כמה קובצי Notebook באותו זמן ריצה של Colab משתמשים באותו מאגר Git, הם משתמשים באותה הרכבה.
- Unmount workspace: הפסקת תהליך הטעינה של מאגר Git. ביטול הטעינה של סביבת העבודה גורם לכך שהטעינה לא תהיה זמינה לכל קובצי ה-notebook בסביבת זמן הריצה של Colab שהשתמשו בה.
- Connect workspace: התחלת החיבור ל-mount פעיל בסשן הנוכחי של ה-notebook. החיבור מעדכן את ספריית העבודה ואת נתיב המערכת של ה-notebook כך שיכללו את מאגר Git, וכך מאפשר לגשת לקבצים ולייבא אותם.
- Disconnect workspace: ניתוק החיבור של סביבת העבודה לסשן הנוכחי של ה-Notebook ואיפוס למצב ברירת המחדל. הניתוק לא משפיע על סטטוס החיבור של ה-mount בסשנים פעילים אחרים של Notebook. כדי לסיים את החיבור של הסשן, מומלץ להשתמש בכפתור Disconnect workspace.
- תיקון: משחזר את נקודת הגישה או החיבור למצב תקין אם הם לא ניתנים לשימוש.
אחרי שמפעילים את נקודת הגישה, אפשר לבדוק את התקינות בזמן אמת ואת הנתיב הפעיל של נקודת הגישה בשורת הסטטוס. מצבי התקינות האפשריים הם Connected, Mounted, Stopped ו-Unhealthy.
המאמרים הבאים
- איך יוצרים תיקיות Notebook
- איך יוצרים שאילתות שמורות
- איך יוצרים ומנהלים מאגרים
- איך מארגנים נכסי קוד בתיקיות