בדף הזה מוסבר איך להגדיר אימות למאגר Ruby gem ב-Artifact Registry.
כדי להשתמש באפליקציית צד שלישי להתחברות למאגר, צריך לבצע אימות ב-Artifact Registry.
לא צריך להגדיר אימות ל-Cloud Build או לסביבות זמן ריצה כמו Google Kubernetes Engine ו-Cloud Run. Google Cloud
לפני שמתחילים
- אם מאגר היעד לא קיים, יוצרים מאגר Ruby gem.
- מוודאים ש-Ruby מותקן. הוראות ההתקנה מופיעות בGoogle Cloud הדרכה להגדרת Ruby.
- מוודאים שלחשבון המשתמש או לחשבון השירות שבהם אתם משתמשים יש את ההרשאות הנדרשות לגישה למאגר.
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init - (אופציונלי) הגדרת ברירות מחדל לפקודות של ה-CLI של gcloud.
סקירה כללית
Ruby תומך בשתי שיטות לאימות בקשות למאגר Artifact Registry:
- ממשק ה-CLI של RubyGems: תומך בבקשות push ו-pull. ממשק ה-CLI הזה זמין כברירת מחדל עם Ruby. כשאתם מבצעים אימות באמצעות RubyGems, אתם צריכים לבצע אימות בכל פעם שאתם שולחים בקשת push או pull למאגר.
Bundler CLI: תומך בבקשות משיכה. Bundler מאחסן חבילות ועדכונים בקובץ gemfile, וכך מאפשר למשתמשים ליצור הגדרות סטנדרטיות בכמה מכונות בלי צורך לאמת כל בקשת משיכה בנפרד. עם זאת, עדיין צריך לאמת מחדש את פרטי הכניסה ל-Bundler מדי פעם.
כדי להתקין את Bundler CLI, מזינים את הפקודה
gem install bundler.
יצירת טוקנים לאימות
כדי לאמת את החבילה ב-Artifact Registry, צריך קודם ליצור טוקן אימות. אחר כך תוכלו להשתמש באסימון הזה כשאתם שולחים בקשות מהחבילה אל Artifact Registry.
אפשר ליצור אסימון גישה מסוג oauth2 באמצעות Google Cloud או אסימון מסוג oauth2l מחוץ ל- Google Cloud.
אסימוני הגישה תקפים למשך 60 דקות. יוצרים אסימון גישה זמן קצר לפני שמריצים פקודות שיוצרות אינטראקציה עם מאגרי מידע. אם פג התוקף של אסימון הגישה, צריך ליצור אסימון גישה חדש.
יצירת טוקן באמצעות gcloud
כדי ליצור אסימון גישה של oauth2 באמצעות Google Cloud, מריצים את הפקודה הבאה:
export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
עכשיו אפשר להפנות אל ACCESS_TOKEN כששולחים בקשות מחבילת Ruby אל Artifact Registry.
יצירת טוקן בלי להשתמש ב-gcloud
כדי ליצור אסימון גישה באמצעות ה-CLI של oauth2l בלבד:
כדי להתקין את הגרסה העדכנית של
oauth2l, מריצים את הפקודה הבאה:go install github.com/google/oauth2l@latestמריצים את הפקודה הבאה:
export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"Google Cloud יוצר אסימון גיבוב SHA256 ומאחסן אותו במשתנה
ACCESS_TOKEN. עכשיו אפשר להפנות אלACCESS_TOKENכששולחים בקשות מחבילת Ruby אל Artifact Registry.
אימות באמצעות RubyGems CLI
ה-CLI של RubyGems משתמש באסימוני OAuth2 כדי לאמת בקשה. כדי להעביר אסימוני OAuth2 לקריאות למאגרי Artifact Registry, צריך להעביר את אסימון ה-OAuth2 עם הכתובת של המאגר כששולחים בקשה. לאסימונים יש משך חיים של שעה אחת, וצריך לרענן אותם כל שעה.
אימות של בקשות משיכה
אפשר לאמת בקשת משיכה בשורת הפקודה של Google Cloud CLI או על ידי עדכון הקובץ .gemrc.
אימות של בקשות משיכה בשורת הפקודה
כדי לבצע אימות לגרסה העדכנית של ה-gem בבקשת משיכה, מריצים את הפקודה הבאה:
gem install GEM_NAME --source https://$ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
כדי לבצע אימות לגרסה ספציפית של Gem, מוסיפים את האפשרות -v GEM_VERSION לפקודה gem install.
כאשר:
- GEM_NAME הוא שם ה-Gem שעבורו מוגשת הבקשה.
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
- PROJECT הוא מזהה הפרויקט שמכיל את המאגר.
- REPOSITORY הוא המזהה של המאגר.
אימות בקובץ .gemrc
כדי להגדיר אימות למקורות בבקשות משיכה, אפשר להוסיף את השורות הבאות לקובץ /.gemrc הגלובלי או הספציפי לפרויקט:
# File: ~/.gemrc
# Use the ACCESS_TOKEN retrieved from export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
<...>
:sources:
- https://ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/
<...>
כאשר:
- ACCESS_TOKEN הוא אסימון הגישה שלכם ל-OAuth2.
- LOCATION הוא המיקום האזורי או הרב-אזורי של המאגר.
- PROJECT הוא מזהה הפרויקט שמכיל את המאגר.
- REPOSITORY הוא המזהה של המאגר.
כדי להתקין gem באמצעות המקור או המקורות שמוגדרים בקובץ /.gemrc, מריצים את הפקודה:
gem install GEM_NAME
אימות בקשות Push
אפשר לאמת בקשת push בשורת הפקודה של Google Cloud CLI או לעדכן את קובץ פרטי הכניסה.
אימות בקשות push בשורת הפקודה
כדי לאמת את בקשת הדחיפה, מריצים את הפקודה הבאה:
export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
כאשר:
- GEM_NAME הוא שם ה-Gem שעבורו מוגשת הבקשה.
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
- PROJECT הוא מזהה הפרויקט שמכיל את המאגר.
- REPOSITORY הוא המזהה של המאגר.
אימות בקשות push בקובץ פרטי כניסה
כלי שורת הפקודה gem משתמש בקובץ ~/.gem/credentials כדי לאחסן מפתחות API לשליחה ולמשיכה של חבילות gem. כדי להגדיר את קובץ פרטי הכניסה לאימות למקורות בבקשות push, מבצעים את הפעולות הבאות:
מעדכנים את קובץ פרטי הכניסה:
פותחים את
~/.gem/credentialsומוסיפים שורה למאגר. המפתח הוא כתובת ה-URL של המאגר, והערך הואBearer, ואחריו האסימון שלכם::rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer ACCESS_TOKENכאשר:
- RUBYGEMS_ORG_KEY הוא מפתח ה-API של
RubyGems.org. - LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
- PROJECT הוא מזהה הפרויקט שמכיל את המאגר.
- REPOSITORY הוא המזהה של המאגר.
- ACCESS_TOKEN הוא אסימון הגישה שלכם ל-OAuth2.
- RUBYGEMS_ORG_KEY הוא מפתח ה-API של
דוחפים את האבן. שימו לב שלא צריך להגדיר את
GEM_HOST_API_KEY, כי כבר הגדרתם את המפתח בקובץ פרטי הכניסה.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
אימות באמצעות Bundler
Bundler של Ruby מנהל את יחסי התלות של האפליקציה בכמה gems. כדי להגדיר את Bundler:
מוסיפים את הכתובת של המאגר כ-
sourceבקובץ ה-gemfile:# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"מאמתים את המאגר באמצעות
bundle config:export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)" export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY" bundle config $HOST $GEM_TOKEN
כאשר:
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
- PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
- REPOSITORY הוא המזהה של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המערכת תשתמש בו אם לא תציינו את הדגל הזה בפקודה.
מדי פעם תצטרכו לאמת מחדש את מאגר המידע המרוחק. במקרה כזה, מריצים את אותה פקודת אימות משלב 2.
מידע נוסף על הגדרת Bundler זמין במאמר Gemfiles במסמכי התיעוד של bundler.io.