Go-Module in Artifact Registry speichern

Richten Sie ein privates Artifact Registry-Go-Repository ein, laden Sie ein Modul in dieses hoch und verwenden Sie das Modul als Abhängigkeit.

Hinweise

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Artifact Registry API aktivieren.

    Aktivieren Sie die API

  5. Installieren Sie die Google Cloud CLI.
  6. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  7. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  8. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  9. Artifact Registry API aktivieren.

    Aktivieren Sie die API

  10. Installieren Sie die Google Cloud CLI.
  11. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  12. Installieren Sie Go 1.15 oder höher.
  13. Installieren Sie das gcloud CLI-Add-on package-go-module:
    gcloud components install package-go-module

Repository erstellen

So erstellen und konfigurieren Sie ein neues Repository:

  1. Führen Sie den folgenden Befehl aus, um ein neues Repository zu erstellen:

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=go \
        --location=LOCATION \
        --description=DESCRIPTION
    

    Ersetzen Sie Folgendes:

    • REPOSITORY ist der Name des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
    • LOCATION ist der regionale oder multiregionale Standort für das Repository. Sie können dieses Flag auslassen, wenn Sie einen Standardwert festlegen. Führen Sie den Befehl gcloud artifacts locations list aus, um eine Liste der unterstützten Standorte aufzurufen.
    • DESCRIPTION ist eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  2. Führen Sie den folgenden Befehl aus, um die Repository-Details anzusehen.

      gcloud artifacts repositories describe --location=LOCATION REPOSITORY
    

    Die Ausgabe sollte so aussehen:

      Encryption: Google-managed key
      Repository Size: 0.000MB
      createTime: '2022-06-03T20:20:01.644813Z'
      format: GO
      mode: STANDARD_REPOSITORY
      name: projects/my-project/locations/us-west1/repositories/my-repo
      updateTime: '2022-06-03T20:20:01.644813Z'
    

Standardeinstellungen für gcloud-Befehle festlegen

Sie können Ihre gcloud CLI-Befehle vereinfachen, indem Sie die Standardwerte für Projekte, Repositorys und Standorte konfigurieren. Nachdem die Standardeinstellungen konfiguriert sind, sind die Tags --project, --location und --repository nicht mehr erforderlich.

Go-Modul verpacken und hochladen

Das gcloud CLI-Add-on package-go-module verpackt Ihre Go-Module, sodass Sie mit dem Befehl gcloud versionieren und in Artifact Registry hochladen können.

Go-Modul erstellen

Erstellen Sie zuerst ein einfaches Go-Modul und laden Sie es in Ihr Repository hoch.

  1. Erstellen Sie im Basisverzeichnis ein Verzeichnis namens „foo“ für Ihr Modul

    mkdir foo
    
  2. Wechseln Sie in das Verzeichnis Ihres Moduls und führen Sie go mod init aus, um eine go.mod-Datei für Ihr Modul zu erstellen.

      cd foo \
      go mod init example.com/foo
    

    Ersetzen Sie example.com/foo durch den Modulpfad. Weitere Informationen finden Sie in der Referenz zu Go-Modulen.

  3. Erstellen Sie in Ihrem Verzeichnis „foo“ eine Datei foo.go mit folgendem Inhalt:

    
    package foo
    
    const HelloWorld = "Hello World!"
    

Modul verpacken und hochladen

Verpacken Sie das Modul und laden Sie es in Ihr Repository hoch:

  gcloud artifacts go upload --project=PROJECT \
      --repository=REPOSITORY \
      --location=LOCATION \
      --module-path=example.com/foo \
      --version=VERSION \
      --source=SOURCE_LOCATION

Ersetzen Sie Folgendes:

  • PROJECT durch ihre Google Cloud-Projekt-ID.
  • REPOSITORY durch den Namen des Repositorys, in dem das Paket gespeichert ist.
  • LOCATION durch den regionalen oder multiregionalen Standort des Repositorys.
  • example.com/foo durch den Modulpfad. Weitere Informationen finden Sie in der Referenz zu Go-Modulen.
  • VERSION durch die semantische Version des Moduls im Format vX.Y.Z, wobei X die Hauptversion, Y die Nebenversion und Z die Patchversion ist.
  • SOURCE_LOCATION durch den Pfad zum Stammverzeichnis Ihres Go-Moduls Wenn Sie das Flag --source weglassen, wird standardmäßig das aktuelle Verzeichnis verwendet.

Das Modul wird in Artifact Registry hochgeladen.

Weitere Informationen zum Erstellen von Go-Modulen finden Sie in dieser Anleitung.

Module auflisten

Führen Sie den folgenden Befehl aus, um das hochgeladene Go-Modul im Standardprojekt, im Repository und am Standort zu prüfen, wenn die Standardwerte konfiguriert sind:

  gcloud artifacts packages list

Die Ausgabe sollte so aussehen:

  Listing items under project my-project, location us-west1, repository my-repo.

  PACKAGE                   CREATE_TIME          UPDATE_TIME
  example.com/foo           2022-06-03T20:43:39  2022-06-20T20:37:40

Details zur Modulversion ansehen

Führen Sie den folgenden Befehl aus, um die Versionen Ihres Moduls im Standardprojekt, im Repository und am Standort anzusehen, wenn die Standardwerte konfiguriert sind:

  gcloud artifacts versions list --package=MODULE_PATH

Die Ausgabe sollte so aussehen:

  Listing items under project my-project, location us-west1, repository my-repo, package example.com/foo.

  VERSION  DESCRIPTION  CREATE_TIME          UPDATE_TIME
  v0.1.0                2022-06-03T20:43:39  2022-06-03T20:43:39
  v0.1.1                2022-06-20T20:37:40  2022-06-20T20:37:40

Module herunterladen

Zum Importieren von in Artifact Registry gespeicherten Modulen müssen Sie Go anweisen, nach Abhängigkeiten von Artifact Registry zu suchen und die Prüfsummendatenbank zu umgehen.

Go-Umgebung einrichten

  1. Weisen Sie Go an, Module aus Artifact Registry, dem öffentlichen Go-Modul-Proxy herunterzuladen und dann in dieser Reihenfolge als Quelle zu beziehen:

      export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
    

    Ersetzen Sie Folgendes:

    • LOCATION ist der regionale oder multiregionale Standort des Repositorys.
    • PROJECT ist Ihre Google Cloud-Projekt-ID.
    • REPOSITORY ist der Name des Repositorys, in dem das Paket gespeichert ist.
  2. So schließen Sie das Modul von der Prüfung mithilfe der öffentlichen Prüfsummendatenbank aus:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Ersetzen Sie MODULE_PATH_REGEX durch Ihren Modulpfad oder einen regulären Ausdruck, wenn Sie mehrere Module ausschließen möchten.

    Führen Sie den folgenden Befehl aus, um das Modul example.com/foo von der öffentlichen Prüfsummendatenbank auszuschließen:

      export GONOSUMDB=example.com/foo
    

    Wenn Sie möchten, dass alle Module mit Modulpfaden, die mit example.com beginnen, von der Prüfung mit der öffentlichen Prüfsummendatenbank ausgeschlossen werden, führen Sie den folgenden Befehl aus:

      export GONOSUMDB=example.com/*
    

Bei Artifact Registry authentifizieren

Beim Herunterladen von gepackten Go-Modulen zur Verwendung als Abhängigkeiten aus Artifact Registry verwendet das Go-Binärprogramm die Anmeldedaten in Ihrer NETrc-Datei zur Authentifizierung bei Artifact Registry. Zur Vereinfachung des Authentifizierungsvorgangs können Sie mit dem Go Credential Helper die Tokens in der NETRC-Datei für die Authentifizierung bei Artifact Registry aktualisieren.

Der Speicherort der netrc-Datei kann mit der netrc-Umgebungsvariable festgelegt werden. Wenn die Variable NETRC nicht festgelegt ist, liest der Befehl go $HOME/.netrc auf UNIX-ähnlichen Plattformen oder %USERPROFILE%\_netrc unter Windows aus.

Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.

Kurzlebige Anmeldedaten (empfohlen)
Verwenden Sie das Artifact Registry Go Credential Helper-Tool von Artifact Registry, um die Authentifizierungstokens in der NETrc-Datei zu aktualisieren.
Dienstkontoschlüssel verwenden

Wählen Sie diese Option aus, wenn Sie in Ihrer Umgebung keine Anmeldedaten für die Authentifizierung verwenden können. Fügen Sie der NETrc-Datei den unverschlüsselten Dienstkontoschlüssel hinzu.

Go Credential Helper zu GONOPROXY hinzufügen

Bevor Sie Go Credential Helper verwenden können, müssen Sie es der GONOPROXY-Liste hinzufügen, damit Go es direkt von GitHub herunterlädt. Wenn Sie weitere Module direkt aus der Quelle herunterladen möchten, können Sie sie in einer durch Kommas getrennten Liste hinzufügen, wie im folgenden Beispiel gezeigt:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

Dabei sind MODULE_PATH1 und MODULE_PATH2 Modulpfade von Modulen, die aus der Quelle heruntergeladen werden sollen.

So fügen Sie Go Credential Helper zur GONOPROXY-Liste hinzu und führen es aus, um Ihre Anmeldedaten einzurichten:

  1. Go Credential Helper zu GONOPROXY hinzufügen

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. Führen Sie den folgenden Befehl aus, um Ihre Artifact Registry-Anmeldedaten mit dem Go-Modulpakettool in die Netrc-Datei einzufügen:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          [--json_key=path/to/service/account/key.json]
    

    Dabei ist LOCATION der regionale oder multiregionale Standort Ihres Repositorys. Wenn Sie mehrere Standorte hinzufügen möchten, geben Sie sie als durch Kommas getrennte Liste ein.

    Go Credential Helper fügt Ihrer Netrc-Datei Einstellungen für die Authentifizierung bei Artifact Registry hinzu. Wenn Sie das Flag --json_key übergeben, wird der Schlüssel zur Passwortauthentifizierung in die Netrc-Datei eingefügt.

Modul als Abhängigkeit verwenden

  1. Wenn Sie kurzlebige Anmeldedaten für die Authentifizierung bei Artifact Registry verwenden, müssen Sie das OAuth-Token mit dem folgenden Befehl aktualisieren:

      GOPROXY=proxy.golang.org \
      go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
    
  2. Erstellen Sie im Basisverzeichnis ein Verzeichnis mit dem Namen „bar“.

      mkdir bar
    
  3. Wechseln Sie in das Verzeichnis Ihres Moduls und führen Sie go mod init aus, um eine go.mod-Datei für Ihr Paket zu erstellen.

      cd bar \
      go mod init example.com/bar
    

    Ersetzen Sie example.com/bar durch den Modulpfad. Weitere Informationen finden Sie in der Referenz zu Go-Modulen.

  4. Wenn Sie die in Artifact Registry gespeicherte Version von „foo“ voraussetzen möchten, bearbeiten Sie die Datei go.mod so:

    
    module example.com/bar
    
    go 1.19
    
    require example.com/foo v0.1.0
    

    Ersetzen Sie Folgendes:

    • example.com/foo ist der Modulpfad des erforderlichen Moduls.
    • v0.1.0 ist die in Artifact Registry gespeicherte Version.
  5. Erstellen Sie eine main.go-Datei in Ihrem bar-Verzeichnis mit folgendem Inhalt:

      
      package main
    
      import (
        "fmt"
    
        foo "example.com/foo"
      )
    
      func main() {
        fmt.Println(foo.HelloWorld)
      }
    
      
    
  6. Führen Sie go mod tidy aus, um Abhängigkeiten einschließlich des Pakets „foo“ herunterzuladen:

      go mod tidy
    
  7. Führen Sie das Barmodul aus:

      go run .
    

    Die Ausgabe sollte so aussehen:

      Hello World!
    

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden.

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden: Prüfen Sie vor dem Entfernen des Repositorys, ob alle Module, die Sie beibehalten möchten, an einem anderen Speicherort verfügbar sind.

  1. So löschen Sie das Repository:

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

    Ersetzen Sie Folgendes:

    • LOCATION durch den regionalen oder multiregionalen Standort des Repositorys.
    • PROJECT durch ihre Google Cloud-Projekt-ID.
    • REPOSITORY durch den Namen des Repositorys.
  2. Wenn Sie die Standardeinstellungen für das Repository und den Standort entfernen möchten, die Sie für die aktive gcloud-Konfiguration konfiguriert haben, führen Sie die folgenden Befehle aus:

      gcloud config unset artifacts/repository
      gcloud config unset artifacts/location
    

Nächste Schritte