Auf dieser Seite wird erläutert, wie Sie gepackte Go-Module verwalten, die in Artifact Registry gespeichert sind.
Hinweise
- Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein neues Repository. Wählen Sie Go als Repository-Format aus.
- Prüfen Sie, ob Sie die erforderlichen Berechtigungen für das Repository haben.
- (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud-Befehle.
- Installieren Sie Go 1.15 oder höher.
Installieren Sie das gcloud CLI-Add-on „package-go-module“:
gcloud components install package-go-module
Konfigurieren Sie Go für die Authentifizierung mit Artifact Registry.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Repository zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Verwalten von Modulen benötigen:
-
Module ansehen:
Artifact Registry-Leser (
roles/artifactregistry.reader
) -
Module herunterladen oder installieren:
Artifact Registry-Leser (
roles/artifactregistry.reader
) -
Fügen Sie einem Repository Module hinzu:
Artifact Registry-Autor (
roles/artifactregistry.writer
) -
Module löschen:
Artifact Registry Repository-Administrator (
roles/artifactregistry.repoAdmin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Modul hochladen
Repository-Modi: Standard
Führen Sie den folgenden Befehl aus, um ein Modul zu verpacken und in Ihr Repository hochzuladen:
gcloud artifacts go upload --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --module-path=MODULE_PATH \ --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.
- MODULE_PATH durch den Modulpfad. Beispiel:
example.com/foo
. Weitere Informationen finden Sie in der Referenz zu Go-Modulen. - VERSION durch die semantische Version des Moduls im Format
vX.Y.Z
, wobeiX
die Hauptversion,Y
die Nebenversion undZ
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.
Neue Modulversion hochladen
Repository-Modi: Standard
Wenn Sie nach der Konfiguration der Standardwerte eine neue Version Ihres Moduls in das Standardprojekt, das Repository und den Speicherort hochladen möchten, führen Sie den folgenden Befehl mit der neuen Versionsnummer aus:
gcloud artifacts go upload \ --module-path=MODULE_PATH \ --version=VERSION \ --source=SOURCE_LOCATION
Ersetzen Sie VERSION durch die Version des aktualisierten Moduls. Führen Sie beispielsweise den folgenden Befehl aus, um die Version 0.1.1
eines Moduls mit dem Pfad example.com/foo
hochzuladen:
gcloud artifacts go upload \ --module-path=example.com/foo \ --version=v0.1.1 \ --source=SOURCE_LOCATION
Wenn Sie ein Modul als Vorabversion kennzeichnen möchten, fügen Sie nach VERSION einen Bindestrich ein und hängen die IDs der Vorabveröffentlichungen des Moduls an:
gcloud artifacts go upload \ --module-path=MODULE_PATH \ --version=VERSION-PRE_RELEASE_IDENTIFIERS \ --source=SOURCE_LOCATION
Ersetzen Sie PRE_RELEASE_IDENTIFIERS durch durch Punkte getrennte alphanumerische ASCII-Zeichen und Bindestriche. Führen Sie beispielsweise den folgenden Befehl aus, um eine Vorabveröffentlichung eines Moduls mit dem Pfadmodul example.com/foo
hochzuladen, das durch alpha.x.12m.5
identifiziert wird:
gcloud artifacts go upload \ --module-path=example.com/foo \ --version=v1.0.0-alpha.x.12m.5 \ --source=SOURCE_LOCATION
Neue Hauptversion hochladen
Repository-Modi: Standard
Hauptversionen sind nicht abwärtskompatibel mit früheren Versionen. Damit Nutzer keine funktionsgefährdenden Änderungen importieren, müssen Hauptversionen nach v1
andere Modulpfade als vorherige Versionen haben. Ab v2
wird die Hauptversion am Ende des Modulpfads hinzugefügt.
Der Modulpfad für v2.0.0
von example.com/foo
wäre beispielsweise example.com/foo/v2
.
Die empfohlene Best Practice besteht darin, Hauptversionen nach v1
in separaten Verzeichnissen zu entwickeln, die nach dem Suffix der Hauptversion benannt sind.
So laden Sie eine neue Hauptversion 2.0.0
eines Moduls mit dem Pfad example.com/foo
zum Standardprojekt, Repository und Speicherort hoch, wenn die Standardwerte konfiguriert sind:
gcloud artifacts go upload --module-path=example.com/foo/v2 --version=v2.0.0
Module auflisten
Repository-Modi: Standard
Führen Sie den folgenden Befehl aus, um ein hochgeladenes Go-Modul im Standardprojekt, im Repository und am Standort zu prüfen, wenn die Standardwerte konfiguriert sind:
gcloud artifacts packages list
Die Ausgabe sollte in etwa 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
Repository-Modi: Standard
Führen Sie den folgenden Befehl aus, um die Versionen eines Moduls im Standardprojekt, im Repository und am Standort anzusehen, wenn die Standardwerte konfiguriert sind:
gcloud artifacts versions list --package=MODULE_PATH
Die Ausgabe sollte in etwa 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
Modul als Abhängigkeit verwenden
Repository-Modi: Standard
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. Folgen Sie der Anleitung zum Einrichten der Authentifizierung und der Go-Umgebung unter Authentifizierung für Go einrichten.
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@latest refresh
Wenn Ihr Modul noch keine
go.mod
-Datei hat, wechseln Sie in den Ordner des Moduls und führen Siego mod init
aus, um einego.mod
-Datei für Ihr Paket zu erstellen.go mod init MODULE_PATH
Ersetzen Sie MODULE_PATH durch den Modulpfad für das in Artifact Registry gespeicherte Modul. Weitere Informationen finden Sie in der Referenz zu Go-Modulen.
Wenn Sie die in Artifact Registry gespeicherte Version Ihres Moduls benötigen, bearbeiten Sie Ihre
go.mod
-Datei 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.
Fügen Sie den Modulpfad wie gewohnt im Abschnitt
import
der Dateimain.go
ein.Wenn Sie beispielsweise ein Modul mit dem in Artifact Registry gespeicherten Pfad
example.com/foo
importieren, könnte der Importbereich so aussehen:package main import ( foo "example.com/foo" ) func main() { ... }
Führen Sie
go mod tidy
aus, um Abhängigkeiten herunterzuladen:go mod tidy
Führen Sie das Modul wie gewohnt aus:
go run .
Das in Artifact Registry gespeicherte Modul wird heruntergeladen und als Abhängigkeit verwendet.
Gepackte Go-Module löschen
Repository-Modi: Standard
Sie können ein Paket und alle zugehörigen Versionen oder eine bestimmte Version löschen.
- Das Löschen eines Pakets kann nicht rückgängig gemacht werden.
Bevor Sie ein Paket oder eine Paketversion löschen, prüfen Sie, ob Sie alle wichtigen Abhängigkeiten davon kommuniziert oder behoben haben.
So löschen Sie ein Paket:
Console
Öffnen Sie in der Cloud Console die Seite Repositories.
Klicken Sie in der Liste der Repositories auf das entsprechende Repository.
Auf der Seite Pakete sind die Pakete des Repositorys aufgeführt.
Wählen Sie das Paket aus, das Sie löschen möchten.
Klicken Sie auf Löschen.
Klicken Sie im Bestätigungsdialogfeld auf Löschen.
gcloud
Führen Sie dazu diesen Befehl aus:
gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]
Wo
- PACKAGE ist der Name des Pakets im Repository.
- REPOSITORY ist der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen dieses Flags dieses Standard-Repository verwendet.
- LOCATION ist ein regionaler oder multiregionaler Speicherort. Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.
--async
wird sofort zurückgegeben, ohne auf den Abschluss des Vorgangs zu warten.
So löschen Sie Versionen eines Pakets:
Console
Öffnen Sie in der Cloud Console die Seite Repositories.
Klicken Sie in der Liste der Repositories auf das entsprechende Repository.
Auf der Seite Pakete sind die Pakete des Repositorys aufgeführt.
Klicken Sie auf das Paket, um die Versionen des Pakets aufzurufen.
Wählen Sie die Versionen aus, die Sie löschen möchten.
Klicken Sie auf Löschen.
Klicken Sie im Bestätigungsdialogfeld auf Löschen.
gcloud
Führen Sie dazu diesen Befehl aus:
gcloud artifacts versions delete VERSION \
--package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] \
[--async]
Wo
- PACKAGE ist der Name des Pakets im Repository.
- REPOSITORY ist der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen dieses Flags dieses Standard-Repository verwendet.
- LOCATION ist ein regionaler oder multiregionaler Speicherort. Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.
--async
wird sofort zurückgegeben, ohne auf den Abschluss des Vorgangs zu warten.
Nächste Schritte
- Lesen Sie den Go-Schnellstart.
- Laden Sie einzelne Dateien herunter, die einem Modul oder einer Version zugeordnet sind, ohne Go-Befehle zu verwenden.