Go-Module in Artifact Registry speichern
Privates Artifact Registry-Go-Repository einrichten und Modul hochladen und das Modul als Abhängigkeit verwenden.
Hinweise
-
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
-Add-on für die gcloud CLI:
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
Ort
für das Repository. Sie können dieses Flag weglassen, wenn Sie einen Standard-Speicherort festgelegt haben.
Führen Sie den folgenden Befehl aus, um eine Liste der unterstützten Standorte aufzurufen:
gcloud artifacts locations list
- DESCRIPTION ist eine optionale Beschreibung des Repositorys. Das sollten Sie nicht tun: enthalten sensible Daten, da Repository-Beschreibungen nicht verschlüsselt sind.
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'
Standardeinstellungen für gcloud-Befehle festlegen
Sie können Ihre gcloud CLI
-Befehle vereinfachen, indem Sie
Standardeinstellungen konfigurieren
für Projekt-, Repository- und Standortwerte. Nach der Konfiguration der Standardeinstellungen
--project
-, --location
- und --repository
-Tags sind nicht erforderlich.
Go-Modul verpacken und hochladen
Das gcloud CLI-Add-on package-go-module
erstellt Pakete für Ihre Go-Module,
Sie können Versionen mithilfe der gcloud
versionieren und in Artifact Registry hochladen.
.
Go-Modul erstellen
Erstellen Sie zuerst ein einfaches Go-Modul zum Hochladen in Ihr Repository.
Erstellen Sie in Ihrem Basisverzeichnis ein Verzeichnis namens „foo“. für Ihr Modul
mkdir foo
Wechseln Sie in das Verzeichnis Ihres Moduls und führen Sie
go mod init
aus, um ein neues eine go.mod-Datei für Ihr Modul an.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 in Ihrem foo-Verzeichnis eine
foo.go
-Datei mit folgendem Inhalt:package foo const HelloWorld = "Hello World!"
Paket verpacken und Modul 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 das regionale oder multiregionale Element Ort 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 Ihrer Go
-Modul. 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 diesem Anleitung
Module auflisten
Führen Sie den folgenden Befehl aus, um das hochgeladene Go-Modul in der Standardeinstellung zu überprüfen Projekt, Repository und Standort, 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 in der Standardeinstellung anzusehen Projekt, Repository und Standort, Standardwerte konfiguriert:
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
Um Module zu importieren, die in Artifact Registry gespeichert sind, müssen Sie Go anweisen, Abhängigkeiten von Artifact Registry zu ermitteln und den Prüfsummendatenbank.
Go-Umgebung einrichten
Go zum Herunterladen von Modulen aus Artifact Registry, dem öffentlichen Go Module-Proxy und Quellen in dieser Reihenfolge:
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 der Paket gespeichert.
Schließen Sie Ihr Modul von der Prüfung mit der öffentlichen Prüfsummendatenbank aus:
export GONOSUMDB=MODULE_PATH_REGEX
Ersetzen Sie MODULE_PATH_REGEX durch Ihren Modulpfad oder einen Regex wenn Sie mehrere Module ausschließen möchten.
So schließen Sie aus, dass Ihr Modul
example.com/foo
öffentlich geprüft wird Prüfsummendatenbank, führen Sie den folgenden Befehl aus:export GONOSUMDB=example.com/foo
Wenn Sie möchten, dass alle Module mit Modulpfaden, die mit
example.com
beginnen, von der öffentlichen Prüfsummendatenbank ausgeschlossen werden soll, führen Sie den folgenden Befehl:export GONOSUMDB=example.com/*
Bei Artifact Registry authentifizieren
Beim Herunterladen gepackter Go-Module zur Verwendung als Abhängigkeiten von Artifact Registry verwendet das Go-Binärprogramm die Anmeldedaten in der netrc-Datei um sich bei Artifact Registry zu authentifizieren. Um die Authentifizierung zu vereinfachen können Sie mit dem Credential Helper Go die Tokens in Ihrem netrc-Datei zur Authentifizierung bei Artifact Registry.
Der Speicherort der netrc-Datei kann mit der Umgebungsvariable netrc festgelegt werden.
Wenn die Variable NETRC
nicht festgelegt ist, liest der Befehl go
$HOME/.netrc
auf UNIX-ähnlichen Plattformen oder %USERPROFILE%\_netrc
unter Windows.
Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.
- Kurzlebige Anmeldedaten (empfohlen)
- Artifact Registry Go Credential Helper-Tool verwenden um die Authentifizierungstokens in der netrc-Datei zu aktualisieren.
- Dienstkontoschlüssel verwenden
Verwenden Sie diese Option, wenn Sie in Ihrer Umgebung keine Anmeldedaten für Authentifizierung. Fügen Sie der netrc-Datei den unverschlüsselten Dienstkontoschlüssel 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,
direkt aus der Quelle herunterladen möchten, können Sie sie durch Kommas getrennt eingeben.
wie im folgenden Beispiel gezeigt:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Dabei sind MODULE_PATH1 und MODULE_PATH2 die Modulpfade der Module, die heruntergeladen werden sollen. aus der Quelle.
Fügen Sie Go Credential Helper Ihrer GONOPROXY
-Liste hinzu und führen Sie es aus, um Ihr
Anmeldedaten:
Go Credential Helper zu
GONOPROXY
hinzufügenexport GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Führen Sie den folgenden Befehl aus, um Ihre Artifact Registry-Anmeldedaten zu Ihrem netrc-Datei mit dem Go-Modulpakettool hinzu:
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 Ort 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 hinzu an Artifact Registry senden. Wenn Sie das Flag
--json_key
übergeben, wird der Schlüssel Ihre Netrc-Datei für die Passwortauthentifizierung.
Modul als Abhängigkeit verwenden
Wenn Sie kurzlebige Anmeldedaten für die Authentifizierung verwenden an Artifact Registry senden, müssen Sie Ihr OAuth-Token aktualisieren, indem Sie folgenden Befehl:
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 foo-Version verlangen möchten, bearbeiten Sie Ihre
go.mod
-Datei so aussehen: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 Modulsv0.1.0
ist die in Artifact Registry gespeicherte Version.
Erstellen Sie eine
main.go
-Datei in Ihrembar
-Verzeichnis mit folgendem Befehl: 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: Stellen Sie vor dem Entfernen des Repositorys sicher, dass alle Module, die Sie behalten möchten, an einem anderen Ort verfügbar sind.
So löschen Sie das Repository:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Ersetzen Sie Folgendes:
- LOCATION durch das regionale oder multiregionale Element Ort 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 zum Konfigurieren 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.