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.
Hinweis
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installieren Sie Go 1.15 oder höher.
- Installieren Sie das
package-go-module
gcloud CLI-Add-on:
gcloud components install package-go-module
Repository erstellen
So erstellen und konfigurieren Sie ein neues Repository:
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 Speicherort für das Repository. Sie können dieses Flag weglassen, wenn Sie einen Standard-Speicherort festgelegt haben.
Führen Sie den Befehl
gcloud artifacts locations list
aus, um eine Liste der unterstützten Speicherorte aufzurufen. - DESCRIPTION ist eine optionale Beschreibung des Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
Führen Sie den folgenden Befehl aus, um die Repository-Details aufzurufen.
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'
Standardwerte für gcloud-Befehle festlegen
Sie können Ihre gcloud CLI
-Befehle vereinfachen, indem Sie die Standardwerte für Projekt-, Repository- und Standortwerte konfigurieren. Sobald die Standardeinstellungen konfiguriert sind, sind die Tags --project
, --location
und --repository
nicht mehr erforderlich.
Go-Modul verpacken und hochladen
Das package-go-module
-Add-on für die gcloud CLI verpackt Ihre Go-Module, sodass Sie sie mit dem Befehl gcloud
versionieren und in Artifact Registry hochladen können.
Go-Modul erstellen
Erstellen Sie zuerst ein einfaches Go-Modul, das Sie in Ihr Repository hochladen.
Erstellen Sie in Ihrem Basisverzeichnis ein Verzeichnis mit dem Namen „foo“ für Ihr Modul.
mkdir foo
Wechseln Sie zum 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 Go-Modulreferenz.Erstellen Sie im Verzeichnis „foo“ eine
foo.go
-Datei 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 Speicherort des Repositorys.
example.com/foo
durch den Modulpfad. Weitere Informationen finden Sie in der Referenz zu Go-Modulen.- VERSION mit der semantischen 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, ist das aktuelle Verzeichnis der Standardwert.
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 Standard-Repository und am Standardspeicherort 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 Standard-Repository und am Standardspeicherort aufzurufen, 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
Wenn Sie in Artifact Registry gespeicherte Module importieren möchten, müssen Sie Go anweisen, nach Abhängigkeiten in Artifact Registry zu suchen und die Prüfsummendatenbank zu umgehen.
Go-Umgebung einrichten
Weisen Sie Go an, Module in dieser Reihenfolge herunterzuladen: Artifact Registry, der öffentliche Go-Modul-Proxy und dann die Quelle:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Ersetzen Sie Folgendes:
- LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.
- PROJECT ist Ihre Google Cloud Projekt-ID.
- REPOSITORY ist der Name des Repositorys, in dem das Paket gespeichert ist.
Ihr Modul von der Überprüfung mit der öffentlichen Prüfsummendatenbank ausschließen:
export GONOSUMDB=MODULE_PATH_REGEX
Ersetzen Sie MODULE_PATH_REGEX durch den Modulpfad oder einen regulären Ausdruck, wenn Sie mehrere Module ausschließen möchten.
Wenn Sie Ihr Modul
example.com/foo
von der Überprüfung mit der öffentlichen Prüfsummendatenbank ausschließen möchten, führen Sie den folgenden Befehl aus:export GONOSUMDB=example.com/foo
Wenn Sie alle Module mit Modulpfaden ausschließen möchten, die mit
example.com
beginnen, von der Prüfung mit der öffentlichen Prüfsummendatenbank, führen Sie den folgenden Befehl aus:export GONOSUMDB=example.com/*
Bei Artifact Registry authentifizieren
Wenn Sie verpackte Go-Module herunterladen, die als Abhängigkeiten aus Artifact Registry verwendet werden sollen, verwendet die Go-Binärdatei die Anmeldedaten in Ihrer netrc-Datei, um sich bei Artifact Registry zu authentifizieren. Um den Authentifizierungsprozess zu vereinfachen, können Sie den Go-Credential Helper verwenden, um die Tokens in Ihrer netrc-Datei für die Authentifizierung bei Artifact Registry zu aktualisieren.
Der Speicherort der netrc-Datei kann mit der Umgebungsvariablen „netrc“ festgelegt werden.
Wenn die Variable NETRC
nicht festgelegt ist, wird vom Befehl go
auf UNIX-ähnlichen Plattformen $HOME/.netrc
oder unter Windows %USERPROFILE%\_netrc
gelesen.
Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.
- Kurzlebige Anmeldedaten (empfohlen)
- Verwenden Sie das Go-Credential-Helper-Tool von Artifact Registry, um die Authentifizierungstokens in Ihrer netrc-Datei zu aktualisieren.
- Dienstkontoschlüssel verwenden
Verwenden Sie diese Option, wenn Sie in Ihrer Umgebung keine Anmeldedaten für die Authentifizierung verwenden können. Fügen Sie den unverschlüsselten Dienstkontoschlüssel Ihrer netrc-Datei hinzu.
Go-Anmeldedaten-Hilfsprogramm zu GONOPROXY
hinzufügen
Bevor Sie den Go-Anmeldedaten-Helper verwenden können, müssen Sie ihn der Liste GONOPROXY
hinzufügen, damit Go ihn direkt von GitHub herunterlädt. Wenn Sie andere Module haben, die direkt von der Quelle heruntergeladen werden sollen, können Sie sie in einer kommagetrennten Liste hinzufügen, wie im folgenden Beispiel gezeigt:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Dabei sind MODULE_PATH1 und MODULE_PATH2 die Pfade zu den Modulen, die aus der Quelle heruntergeladen werden sollen.
So fügen Sie der Liste GONOPROXY
den Go-Anmeldedaten-Helper hinzu und führen ihn aus, um Ihre Anmeldedaten einzurichten:
Go-Anmeldedaten-Helper zu
GONOPROXY
hinzufügenexport GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Führen Sie den folgenden Befehl aus, um Ihrer netrc-Datei mit dem Go-Modul-Pakettool Ihre Artifact Registry-Anmeldedaten hinzuzufü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 Speicherort Ihres Repositorys. Wenn Sie mehrere Standorte hinzufügen möchten, geben Sie sie als durch Kommas getrennte Liste ein.
Der 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 Ihrer netrc-Datei für die Passwortauthentifizierung hinzugefügt.
Modul als Abhängigkeit verwenden
Wenn Sie kurzlebige Anmeldedaten für die Authentifizierung in Artifact Registry verwenden, müssen Sie Ihr OAuth-Token aktualisieren. Führen Sie dazu den folgenden Befehl aus:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
Erstellen Sie in Ihrem Basisverzeichnis ein Verzeichnis mit dem Namen „bar“.
mkdir bar
Wechseln Sie in das Verzeichnis Ihres Moduls und führen Sie
go mod init
aus, um einego.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.Wenn Sie die in Artifact Registry gespeicherte Version von „foo“ benötigen, bearbeiten Sie die Datei
go.mod
so, dass sie folgendermaßen aussieht: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.
Erstellen Sie eine
main.go
-Datei im Verzeichnisbar
mit folgendem Inhalt:package main import ( "fmt" foo "example.com/foo" ) func main() { fmt.Println(foo.HelloWorld) }
Führen Sie „go mod tidy“ aus, um Abhängigkeiten herunterzuladen, einschließlich des Pakets „foo“:
go mod tidy
Führen Sie das Balkenmodul aus:
go run .
Die Ausgabe sollte so aussehen:
Hello World!
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die in dieser Anleitung 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.
So löschen Sie das Repository:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Ersetzen Sie Folgendes:
- LOCATION durch den regionalen oder multiregionalen Speicherort des Repositorys.
- PROJECT durch Ihre Google Cloud Projekt-ID.
- REPOSITORY durch den Namen des Repositorys.
Wenn Sie die Standardeinstellungen für das Repository und den Standort entfernen möchten, die Sie für die aktive gcloud-Konfiguration festgelegt haben, führen Sie die folgenden Befehle aus:
gcloud config unset artifacts/repository gcloud config unset artifacts/location
Nächste Schritte
- Weitere Informationen zur Konfiguration der Authentifizierung
- Weitere Informationen zum Verwalten von Repositories
- Weitere Informationen zum Verwalten von Go-Modulen
- Lesen Sie unser Infomaterial zu DevOps und informieren Sie sich über das Forschungsprogramm DevOps Research and Assessment.