הגדרת אימות ל-Artifact Registry עבור Maven ו-Gradle

כשמשתמשים באפליקציית צד שלישי כדי להתחבר למאגר של Artifact Registry, צריך לבצע אימות ב-Artifact Registry. המסמכים האלה מתמקדים בהגדרות של Maven ו-Gradle.

אין צורך להגדיר אימות ל-Cloud Build או לסביבות זמן ריצה כמו Google Kubernetes Engine ו-Cloud Run, אבל כדאי לוודא שההרשאות הנדרשות מוגדרות. Google Cloudמידע נוסף זמין במאמרים בנושא Cloud Build ופריסה בסביבות זמן ריצה של Google Cloud .

לפני שמתחילים

  1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    gcloud init

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  2. (אופציונלי) הגדרת ברירות מחדל לפקודות gcloud.
  3. אם אתם מגדירים אימות באמצעות מאגר סטנדרטי, אתם צריכים לבדוק את מדיניות הגרסאות כדי להגדיר את פרויקט Maven בצורה נכונה לסוגי חבילות Java שאתם יכולים להעלות.

    המסוף

    1. פותחים את הדף Repositories במסוף Google Cloud .

      פתיחת הדף Repositories

    2. לוחצים על המאגר שרוצים לבצע בו אימות.

      בקטע פרטים מוצגת מדיניות הגרסאות. אם במאגר יש מדיניות לגבי גרסאות של תמונות מצב, בשדה Allow snapshot overwrites מצוין אם תמונות מצב יכולות לדרוס גרסאות תואמות של תמונות מצב במאגר.

    gcloud

    מריצים את הפקודה הבאה כדי לראות תיאור של מאגר.

    gcloud artifacts repositories describe REPOSITORY \
          --project=PROJECT \
          --location=LOCATION
    

    כאשר:

    • REPOSITORY הוא המזהה של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המערכת תשתמש בו אם לא תציינו את הדגל הזה בפקודה.
    • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
    • LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.

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

    Encryption: Google-owned and Google-managed encryption key
    createTime: '2021-10-04T19:39:10.897404Z'
    format: MAVEN
    mavenConfig:
      allowSnapshotOverwrites: false
      versionPolicy: SNAPSHOT
    

    אם למאגר אין מדיניות גרסאות, הערך של mavenConfig הוא {}.

סקירה כללית

‫Artifact Registry תומך בשיטות האימות הבאות.

שימוש בכלי עזר לאימות
האפשרות הזו מספקת את הגמישות הגדולה ביותר. כשכוללים את כלי העזר בהגדרות של Maven או Gradle, ‏ Artifact Registry מחפש פרטי כניסה של חשבון שירות בסביבה.
ציון מפתח של חשבון שירות כפרטי כניסה
משתמשים באפשרות הזו כשאפליקציה לא תומכת ב-Application Default Credentials, אבל כן תומכת באימות באמצעות שם משתמש וסיסמה.

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

  • מומלץ להשתמש בחשבון שירות ייעודי לאינטראקציה עם מאגרי מידע.
  • מקצים את התפקיד ב-Artifact Registry עם ההרשאות המינימליות שנדרשות לחשבון השירות. לדוגמה, אפשר להקצות את התפקיד Artifact Registry Reader לחשבון שירות שמוריד רק ארטיפקטים.
  • אם קבוצות בארגון שלכם צריכות רמות גישה שונות למאגרי מידע ספציפיים, צריך להעניק גישה ברמת מאגר המידע ולא ברמת הפרויקט.
  • חשוב לפעול לפי השיטות המומלצות לניהול פרטי כניסה.

אימות באמצעות כלי עזר לאימות

‫Artifact Registry מספק Maven wagon וGradle plugin כעוזרים לפרטי הכניסה. כשמשתמשים בכלי העזר לפרטי הכניסה, פרטי הכניסה לא נשמרים בפרויקט Java. במקום זאת, Artifact Registry מחפש פרטי כניסה בסדר הבא:

  1. Application Default Credentials‏ (ADC), אסטרטגיה שמחפשת פרטי כניסה בסדר הבא:

    1. פרטי הכניסה מוגדרים במשתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS.

    2. פרטי הכניסה שחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine,‏ Google Kubernetes Engine,‏ Cloud Run,‏ App Engine או בפונקציות של Cloud Run מספק.

  2. פרטי כניסה שסופקו על ידי Google Cloud CLI, כולל פרטי כניסה של משתמשים מהפקודה gcloud auth application-default login.

המשתנה GOOGLE_APPLICATION_CREDENTIALS הופך את החשבון לאימות למפורש, וכך קל יותר לפתור בעיות. אם לא משתמשים במשתנה, צריך לוודא שלחשבונות ש-ADC עשוי להשתמש בהם יש את ההרשאות הנדרשות. לדוגמה, לחשבון השירות שמוגדר כברירת מחדל למכונות וירטואליות ב-Compute Engine, לצמתים ב-Google Kubernetes Engine ולעדכונים ב-Cloud Run יש גישת קריאה בלבד למאגרים. אם אתם מתכוונים להעלות נתונים מהסביבות האלה באמצעות חשבון השירות שמוגדר כברירת מחדל, אתם צריכים לשנות את ההרשאות.

הגדרה של חשבון שירות לכלי עזר לפרטי כניסה

כדי ליצור חשבון שירות ולהגדיר אימות באמצעות משתנה הסביבה:

  1. יוצרים חשבון שירות שיפעל בשם האפליקציה, או בוחרים חשבון שירות קיים שמשמש לאוטומציה.

    כדי להגדיר אימות באמצעות Artifact Registry, תצטרכו את המיקום של קובץ המפתח של חשבון השירות. בחשבונות קיימים, אפשר לראות את המפתחות וליצור מפתחות חדשים בדף 'חשבונות שירות'.

    מעבר לדף 'חשבונות שירות'

  2. מקצים לחשבון השירות את התפקיד הספציפי ב-Artifact Registry כדי לתת גישה למאגר.

  3. מקצים את המיקום של קובץ המפתח של חשבון השירות למשתנה GOOGLE_APPLICATION_CREDENTIALS כדי שעוזר האישורים של Artifact Registry יוכל לקבל את המפתח כשמתחברים למאגרי מידע.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    KEY-FILE הוא הנתיב אל קובץ המפתח של חשבון השירות.

הגדרת Maven

  1. מגדירים את Maven לסוג המאגר שבו משתמשים.

    רגילה

    1. מריצים את הפקודה הבאה כדי להדפיס את הגדרות המאגר שצריך להוסיף לפרויקט Java.

      gcloud artifacts print-settings mvn \
          --project=PROJECT \
          --repository=REPOSITORY \
          --location=LOCATION
      

      כאשר:

      • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
      • REPOSITORY הוא המזהה של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המאגר הזה ישמש אתכם אם לא תציינו מאגר אחר בפקודה.
      • LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
    2. מוסיפים את ההגדרות שמוחזרות לקטעים המתאימים בקובץ pom.xml של פרויקט Maven. פרטים על מבנה הקובץ מופיעים בהפניה ל-POM של Maven.

      בדוגמה הבאה מוצגות הגדרות למאגר שבו מאוחסנות גם גרסאות של תמונות מצב וגם גרסאות של מהדורות.

      <distributionManagement>
        <snapshotRepository>
          <id>artifact-registry</id>
          <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
        </snapshotRepository>
        <repository>
          <id>artifact-registry</id>
          <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
        </repository>
      </distributionManagement>
      
      <repositories>
        <repository>
          <id>artifact-registry</id>
          <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      
      <build>
        <extensions>
          <extension>
            <groupId>com.google.cloud.artifactregistry</groupId>
            <artifactId>artifactregistry-maven-wagon</artifactId>
            <version>2.2.5</version>
          </extension>
        </extensions>
      </build>
      

      האלמנטים <release> ו-<snapshot> מציינים אם במאגר מאוחסנים חבילות של גרסאות, חבילות של תמונות מצב או שניהם. ההגדרות האלה צריכות להתאים למדיניות הגרסאות של המאגר.

      האלמנט <build> מגדיר את ה-wagon של Artifact Registry כתוסף. מידע על wagon מופיע במסמכי העזרה של הכלים של Artifact Registry Maven.

    מרחוק או וירטואלי

    עורכים את הקובץ pom.xml בפרויקט. פרטים על מבנה הקובץ מופיעים בהפניה ל-POM של Maven.

    בדוגמה הבאה מוצגות הגדרות למאגר מרוחק שבו מאוחסנות גם גרסאות של תמונת מצב וגם גרסאות של מהדורות. בדוגמה הזו, הפרויקט תלוי בגרסה של חבילת Guava.

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.google.hello</groupId>
      <artifactId>repo-config</artifactId>
      <version>4.1-SNAPSHOT</version>
      <description>version 1 release</description>
    
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>28.0-jre</version>
        </dependency>
      </dependencies>
    
      <repositories>
        <repository>
          <id>central</id>
          <name>Maven Central remote repository</name>
          <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT_ID/REMOTE-REPOSITORY-NAME</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    
      <build>
        <extensions>
          <extension>
            <groupId>com.google.cloud.artifactregistry</groupId>
            <artifactId>artifactregistry-maven-wagon</artifactId>
            <version>2.2.5</version>
          </extension>
        </extensions>
      </build>
    </project>
    
    • בקטע <repositories> מוגדר מאגר Artifact Registry. במאגר מרוחק, צריך להגדיר את הרכיב <id> לערך central. ההגדרה הזו מבטלת את ערך ברירת המחדל של מזהה המאגר central שעובר בירושה מ-Super POM.

    • בקטע <build> מוגדרת עגלת Artifact Registry כתוסף. מידע על wagon זמין במסמכי העזרה של הכלים של Artifact Registry Maven.

    • בדוגמה הזו, בקטע <dependencies> מוגדרת תלות בחבילה Guava בגרסה 28.0-jre.

  2. ‫Maven פותר חלק מהתלות לפני שהוא מחיל קרון שמוגדר ב-pom.xml, כולל:

    • הפניות בפרויקט Maven משני לפרויקט ראשי באמצעות הרכיב <parent>.
    • יחסי תלות של תוספים שמאוחסנים ב-Artifact Registry.

    אם הפרויקט צריך לפתור את יחסי התלות האלה, צריך להשתמש במנגנון של תוספי הליבה כדי לוודא ש-Maven יכול לאתר קובצי POM של אב ותוספים.

    בפרויקט, יוצרים את הקובץ ${maven.projectBasedir}/.mvn/extensions.xml עם התוכן הבא. רכיב <extension> מגדיר את הקרון.

    <extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.2.5</version>
      </extension>
    </extensions>
    

    ‫Maven יכול עכשיו לפתור תלות של הורה או של תוסף מ-Artifact Registry.

ההגדרה של האימות הושלמה.

הגדרת Gradle

  1. מגדירים את Gradle לסוג המאגר שבו משתמשים.

    רגילה

    1. מריצים את הפקודה הבאה כדי להדפיס את הגדרות המאגר שצריך להוסיף לפרויקט Java.

      gcloud artifacts print-settings gradle \
          --project=PROJECT \
          --repository=REPOSITORY \
          --location=LOCATION
      

      כאשר:

      • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
      • REPOSITORY הוא המזהה של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המאגר הזה ישמש אתכם אם לא תציינו מאגר אחר בפקודה.
      • LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
    2. מוסיפים את הגדרות המאגר לקובץ build.gradle. בדוגמה הבאה מוצג המיקום היחסי של החלקים המודפסים.

      plugins {
        id "maven-publish"
        id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.5"
      }
      
      publishing {
        publications {
          mavenJava(MavenPublication) {
            groupId 'maven.example.id'
            from components.java
           }
        }
        repositories {
          maven {
            url "artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY"
          }
        }
      }
      repositories {
        maven {
          url "artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY"
        }
      }
      
      • בקטע plugins מצהירים על התוסף Artifact Registry. מידע על הפלאגין זמין במאמרי העזרה בנושא כלים של Artifact Registry Maven.

      • בקטע publishing מוגדרים הקבצים להעלאה ומאגר היעד של Artifact Registry. כשמוכנים להעלות, אפשר לעדכן את רשימת הקבצים בקטע publications. מידע על הגדרות הפרסום זמין במאמר בנושא Maven Publish plugin.

    מרחוק או וירטואלי

    מוסיפים את הגדרות המאגר לקובץ build.gradle.

    בדוגמה הבאה מוצגות הגדרות של מאגר מרוחק. בדוגמה הזו, הפרויקט תלוי בגרסה של חבילת Guava.

    plugins {
      id 'java'
      id "maven-publish"
      id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.5"
      id 'maven'
    }
    
    repositories {
      maven {
        url "artifactregistry://LOCATION-maven.pkg.dev /PROJECT_ID/REMOTE-REPOSITORY-NAME"
      }
    }
    dependencies {
      compile "com.google.guava:guava:31.1-jre"
    }
    
    • בקטע plugins מצהירים על התוסף Artifact Registry. מידע על הפלאגין זמין במאמרי העזרה בנושא כלים של Artifact Registry Maven.

    • בקטע repositories מוגדר מאגר Artifact Registry.

    • בדוגמה הזו, בקטע dependencies מוגדרת תלות בחבילה Guava בגרסה 31.1-jre.

    מגדירים את יחסי התלות של החבילה בקטע dependencies.

  2. אם אתם צריכים להשתמש במאגרי מידע בקובץ init.gradle או settings.gradle, אתם יכולים להוסיף את הגדרות הפלאגין לקבצים האלה.

    בקטע init.gradle, מוסיפים את ההגדרה הבאה:

    initscript {
      repositories {
        maven {
          url "https://plugins.gradle.org/m2/"
        }
      }
      dependencies {
        classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.2.5"
      }
    }
    apply plugin: com.google.cloud.artifactregistry.gradle.plugin.ArtifactRegistryGradlePlugin
    

    בקובץ settings.gradle, מוסיפים את ההגדרה הבאה:

    buildscript {
      repositories {
        maven {
          url "https://plugins.gradle.org/m2/"              }
        }
      dependencies {
        classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.2.5"
      }
    }
    apply plugin: "com.google.cloud.artifactregistry.gradle-plugin"
    

ההגדרה של האימות הושלמה.

הגדרת אימות סיסמה

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

הגדרה של חשבון שירות לאימות באמצעות סיסמה

כדי ליצור חשבון שירות:

  1. יוצרים חשבון שירות שיפעל בשם האפליקציה, או בוחרים חשבון שירות קיים שמשמש לאוטומציה.

    כדי להגדיר אימות באמצעות Artifact Registry, תצטרכו את המיקום של קובץ המפתח של חשבון השירות. בחשבונות קיימים, אפשר לראות את המפתחות וליצור מפתחות חדשים בדף 'חשבונות שירות'.

    מעבר לדף 'חשבונות שירות'

  2. כדי להפעיל את חשבון השירות בסשן הנוכחי של ה-CLI של gcloud, מריצים את הפקודה:

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    כאשר:

    • ACCOUNT הוא המשתמש או חשבון השירות.
    • KEY-FILE הוא הנתיב לקובץ מפתח JSON של חשבון השירות.

הגדרת Maven

  1. מגדירים את Maven לסוג המאגר שבו משתמשים.

    רגילה

    1. מריצים את הפקודה הבאה כדי להדפיס את הגדרות המאגר שצריך להוסיף לפרויקט Java.

      gcloud artifacts print-settings mvn \
          --project=PROJECT \
          --repository=REPOSITORY \
          --location=LOCATION \
          --json-key=KEY-FILE
      

      כאשר:

      • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
      • REPOSITORY הוא המזהה של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המערכת תשתמש בו אם לא תציינו את הדגל הזה בפקודה.
      • LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
      • KEY-FILE הוא הנתיב לקובץ מפתח JSON של חשבון השירות.

    הפקודה מחזירה הגדרות שצריך לכלול בפרויקט Java, כולל גרסה בקידוד base64 של המפתח הפרטי.

    1. מוסיפים את הגדרות המאגר שהוחזרו לרכיב <project> בקטעים המתאימים בקובץ pom.xml של פרויקט Maven. פרטים על מבנה הקובץ מופיעים בהפניית POM של Maven.
    <project>
      <distributionManagement>
        <snapshotRepository>
          <id>artifact-registry</id>
          <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
        </snapshotRepository>
        <repository>
          <id>artifact-registry</id>
          <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
        </repository>
      </distributionManagement>
    
      <repositories>
        <repository>
          <id>artifact-registry</id>
          <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </project>
    

    האלמנטים <release> ו-<snapshot> מציינים אם במאגר מאוחסנים חבילות של גרסאות, חבילות של תמונות מצב או שניהם. ההגדרות האלה צריכות להתאים למדיניות הגרסאות של המאגר.

    1. מוסיפים את הגדרות האימות שהוחזרו ברכיב <settings> לקטע <servers> בקובץ ~/.m2/settings.xml. בדוגמה הבאה, KEY הוא המפתח בקידוד Base64 מקובץ המפתח.

    מידע נוסף זמין בהפניה להגדרות של Maven.

    <settings>
      <servers>
        <server>
          <id>artifact-registry</id>
          <configuration>
            <httpConfiguration>
              <get>
                <usePreemptive>true</usePreemptive>
              </get>
              <head>
                <usePreemptive>true</usePreemptive>
              </head>
              <put>
                <params>
                  <property>
                    <name>http.protocol.expect-continue</name>
                    <value>false</value>
                  </property>
                </params>
              </put>
            </httpConfiguration>
          </configuration>
          <username>_json_key_base64</username>
          <password>KEY</password>
        </server>
      </servers>
    </settings>
    

    מרחוק או וירטואלי

    1. מוסיפים את הגדרות המאגר לקטעים המתאימים בקובץ pom.xml של פרויקט Maven. פרטים על מבנה הקובץ מופיעים בהפניה ל-POM של Maven.

      <repositories>
        <repository>
           <id>central</id>
           <name>Maven Central remote repository</name>
           <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT_ID/REMOTE-REPOSITORY-NAME</url>
           <layout>default</layout>
           <releases>
             <enabled>true</enabled>
           </releases>
           <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      

    בקטע <repositories> מוגדר מאגר Artifact Registry. במאגר מרוחק, צריך להגדיר את הרכיב <id> לערך central. ההגדרה הזו מבטלת את ערך ברירת המחדל של מזהה המאגר central שעובר בירושה מ-Super POM.

    1. מבצעים קידוד Base64 של קובץ המפתח באמצעות הפקודה הבאה. מחליפים את KEY-FILE בשם של קובץ המפתח.

      base64 -w 0 KEY-FILE
      
    2. מוסיפים הגדרות אימות ברכיב <settings> לקטע <servers> בקובץ ~/.m2/settings.xml.

    מידע נוסף זמין בהפניה להגדרות של Maven.

    <settings>
      <servers>
        <server>
          <id>artifact-registry</id>
          <configuration>
            <httpConfiguration>
              <get>
                <usePreemptive>true</usePreemptive>
              </get>
              <head>
                <usePreemptive>true</usePreemptive>
              </head>
              <put>
                <params>
                  <property>
                    <name>http.protocol.expect-continue</name>
                    <value>false</value>
                  </property>
                </params>
              </put>
            </httpConfiguration>
          </configuration>
          <username>_json_key_base64</username>
          <password>KEY</password>
        </server>
      </servers>
    </settings>
    
    1. אם אתם משתמשים בנקודות קצה של HTTP ורוצים להשתמש בקישוריות Maven native לאימות, אתם יכולים להעביר כותרת אימות באמצעות כותרת Custom HTTP ב-settings.xml.

    דוגמה:

    <settings>
    <servers>
      <server>
        <id>artifact-registry</id>
        <configuration>
          <httpHeaders>
            <property>
              <name>Authorization </name>
              <value>Bearer ${artifact.registry.token}</value>
            </property>
          </httpHeaders>
          <httpConfiguration>
            <get>
              <usePreemptive>true</usePreemptive>
            </get>
            <head>
              <usePreemptive>true</usePreemptive>
            </head>
            <put>
              <params>
                <property>
                  <name>http.protocol.expect-continue</name>
                  <value>false</value>
                </property>
              </params>
            </put>
          </httpConfiguration>
        </configuration>
      </server>
    </servers>
    </settings>
    

ההגדרה של האימות הושלמה.

הגדרת Gradle

  1. מגדירים את Gradle לסוג המאגר שבו משתמשים.

    רגילה

    1. מריצים את הפקודה הבאה כדי להדפיס את הגדרות המאגר שצריך להוסיף לפרויקט Java.

      gcloud artifacts print-settings gradle \
          --project=PROJECT \
          --repository=REPOSITORY \
          --location=LOCATION \
          --json-key=KEY-FILE
      

      כאשר:

      • PROJECT הוא מזהה הפרויקט.
      • REPOSITORY הוא המזהה או המזהה המוגדר במלואו של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המערכת תשתמש בו אם לא תציינו את הדגל הזה בפקודה.
      • KEY-FILE הוא הנתיב לקובץ מפתח JSON של חשבון השירות. אם הפעלתם את הפקודה להפעלת חשבון השירות, אתם יכולים להשמיט את הדגל הזה.

      הפקודה מחזירה הגדרות שצריך לכלול בפרויקט Java, כולל גרסה בקידוד base64 של המפתח הפרטי.

    2. השורה הבאה מההגדרה שמוחזרת מגדירה משתנה בשם artifactRegistryMavenSecret למפתח של חשבון השירות. מוסיפים את השורה הזו לקובץ ~/.gradle/gradle.properties כדי שהמפתח לא יהיה גלוי בגרסאות או במאגר של בקרת המקור.

      artifactRegistryMavenSecret = KEY
      

      בשורה הזו, KEY הוא המפתח הפרטי בקובץ המפתח של חשבון השירות. ב-_json_key_base64, הערך של artifactRegistryMavenSecret מוגדר כמפתח בקידוד base64 בתור הסיסמה.

    3. בbuild.gradle מציינים את הגדרות המאגר:

      plugins {
        id "maven-publish"
      }
      
      publishing {
        publications {
          mavenJava(MavenPublication) {
            groupId 'maven.example.id'
            from components.java
          }
        }
        repositories {
          maven {
            url "https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY"
            credentials {
              username = "_json_key_base64"
              password = "$artifactRegistryMavenSecret"
            }
            authentication {
              basic(BasicAuthentication)
            }
          }
        }
      }
      repositories {
        maven {
          url "https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY"
          credentials {
            username = "_json_key_base64"
            password = "$artifactRegistryMavenSecret"
          }
          authentication {
            basic(BasicAuthentication)
          }
        }
      }
      
      • בקטע repositories מוגדרים כתובת ה-URL של המאגר ופרטי הכניסה לאימות.
      • בקטע publishing מוגדרים הקבצים להעלאה ומאגר היעד של Artifact Registry. כשמוכנים להעלות, אפשר לעדכן את רשימת הקבצים בקטע publications. מידע על הגדרות הפרסום זמין במאמר בנושא Maven Publish plugin.

    מרחוק או וירטואלי

    1. מבצעים קידוד Base64 של קובץ המפתח באמצעות הפקודה הבאה. מחליפים את KEY-FILE בשם של קובץ המפתח.

      base64 -w 0 KEY-FILE
      
    2. בקובץ ~/.gradle/gradle.properties, מוסיפים את השורה הבאה כדי שהמפתח לא יוצג בגרסאות או במאגר של בקרת המקור.

      artifactRegistryMavenSecret = KEY
      

      בשורה הזו, KEY הוא התוכן של קובץ המפתח בקידוד base64.

    3. מוסיפים את הגדרות המאגר לקובץ build.gradle.

    בדוגמה הבאה מוצגת הגדרה של מאגר מרוחק.

    plugins {
      id 'java'
      id "maven-publish"
      id 'maven'
    }
    
    repositories {
      maven {
        url "artifactregistry://LOCATION-maven.pkg.dev /PROJECT_ID/REMOTE-REPOSITORY-NAME"
        credentials {
        username = "_json_key_base64"
        password = "$artifactRegistryMavenSecret"
      }
      authentication {
        basic(BasicAuthentication)
      }
      dependencies {
        compile "com.google.guava:guava:31.1-jre"
      }
    
    • בקטע repositories מוגדר מאגר Artifact Registry.

    • בדוגמה הזו, בקטע dependencies מוגדרת תלות בחבילה Guava בגרסה 31.1-jre.

    מגדירים את יחסי התלות של החבילה בקטע dependencies.

ההגדרה של האימות הושלמה.

המאמרים הבאים