Go-Module in Artifact Registry speichern
Richten Sie ein privates Artifact Registry-Go-Repository ein, laden Sie ein Modul hoch und verwenden Sie es als Abhängigkeit.
Hinweis
-
Melden Sie sich bei Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init - Installieren Sie Go 1.15 oder höher.
- Installieren Sie das gcloud CLI-Add-on
package-go-module:
gcloud components install package-go-module
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die
Artifact Registry Administrator (roles/artifactregistry.admin) IAM-Rolle für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die
Sie zum Erstellen und Verwalten von Artifact Registry-Go-Modul-Repositories benötigen,
.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
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=DESCRIPTIONErsetzen 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 weglassen, wenn Sie einen
Standard festgelegt haben.
Eine Liste der unterstützten Standorte finden Sie unter
gcloud artifacts locations list. - 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 Standardwerte konfiguriert sind, sind die Tags --project, --location und --repository nicht mehr erforderlich.
Go-Modul packen und hochladen
Mit dem gcloud CLI-Add-on package-go-module können Sie Ihre Go-Module packen, versionieren und mit dem Befehl gcloud in Artifact Registry hochladen.
Go-Modul erstellen
Erstellen Sie zuerst ein einfaches Go-Modul, das Sie in Ihr Repository hochladen können.
Erstellen Sie in Ihrem Home-Verzeichnis ein Verzeichnis mit dem Namen „foo“ für Ihr Modul.
mkdir foo
Wechseln Sie in das Verzeichnis Ihres Moduls und führen Sie
go mod initaus, um eine go.mod-Datei für Ihr Modul zu erstellen.cd foo \ go mod init example.com/foo
Ersetzen Sie
example.com/foodurch den Modulpfad. Weitere Informationen finden Sie in der Go-Modul-Referenz.Erstellen Sie im Verzeichnis „foo“ eine Datei namens
foo.gomit folgendem Inhalt:package foo const HelloWorld = "Hello World!"
Modul packen und hochladen
Packen 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/foodurch den Modulpfad. Weitere Informationen finden Sie in der Go-Modul-Referenz.- VERSION durch die
semantische Version
des Moduls im Format
vX.Y.Z, wobeiXdie Hauptversion,Ydie Nebenversion undZdie Patchversion ist. - SOURCE_LOCATION durch den Pfad zum Stammverzeichnis Ihres Go
Moduls. Wenn Sie das Flag
--sourceweglassen, ist das aktuelle Verzeichnis die Standardeinstellung.
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 Standard Projekt, im Standard-Repository und am Standard-Speicherort 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 Standard Projekt, im Standard-Repository und am Standard-Speicherort 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üfsummen-Datenbank zu umgehen.
Go-Umgebung einrichten
Weisen Sie Go an, Module in dieser Reihenfolge von Artifact Registry, dem öffentlichen Go-Modul-Proxy und dann von der Quelle herunterzuladen:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
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, in dem das Paket gespeichert ist.
Schließen Sie Ihr Modul von der Überprüfung mit der öffentlichen Prüfsummen-Datenbank 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.
Wenn Sie Ihr Modul
example.com/foovon der Überprüfung mit der öffentlichen Prüfsummen-Datenbank ausschließen möchten, führen Sie den folgenden Befehl aus:export GONOSUMDB=example.com/foo
Wenn Sie alle Module mit Modulpfaden, die mit
example.combeginnen, von der Überprüfung mit der öffentlichen Prüfsummen-Datenbank ausschließen möchten, führen Sie den folgenden Befehl aus:export GONOSUMDB=example.com/*
Bei Artifact Registry authentifizieren
Wenn Sie gepackte Go-Module als Abhängigkeiten aus Artifact Registry herunterladen, 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 Ihrer netrc-Datei kann mit der Umgebungsvariablen „netrc“ festgelegt werden.
Wenn die Variable NETRC nicht festgelegt ist, liest der Befehl go unter UNIX-ähnlichen Plattformen $HOME/.netrc oder unter Windows %USERPROFILE%\_netrc.
Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.
- Kurzlebige Anmeldedaten (empfohlen)
- Verwenden Sie das Artifact Registry Go-Credential Helper-Tool 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-Credential Helper zu GONOPROXY hinzufügen
Bevor Sie den Go-Credential 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 direkt von 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 von der Quelle heruntergeladen werden sollen.
So fügen Sie den Go-Credential Helper Ihrer GONOPROXY-Liste hinzu und führen ihn aus, um Ihre Anmeldedaten einzurichten:
Fügen Sie den Go-Credential Helper zu
GONOPROXYhinzu.export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Führen Sie den folgenden Befehl aus, um Ihrer netrc-Datei mit dem Go-Modulpaket-Tool Ihre Artifact Registry-Anmeldedaten hinzuzufügen:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.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.
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 bei Artifact Registry verwenden, müssen Sie Ihr OAuth-Token mit dem folgenden Befehl aktualisieren:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 refresh
Erstellen Sie in Ihrem Home-Verzeichnis ein Verzeichnis mit dem Namen „bar“.
mkdir bar
Wechseln Sie in das Verzeichnis Ihres Moduls und führen Sie
go mod initaus, um einego.mod-Datei für Ihr Paket zu erstellen.cd bar \ go mod init example.com/bar
Ersetzen Sie
example.com/bardurch den Modulpfad. Weitere Informationen finden Sie in der Go-Modul-Referenz.Wenn Sie die in Artifact Registry gespeicherte Version von „foo“ benötigen, bearbeiten Sie Ihre
go.mod-Datei so, dass sie so aussieht:module example.com/bar go 1.19 require example.com/foo v0.1.0Ersetzen Sie Folgendes:
example.com/fooist der Modulpfad des erforderlichen Moduls.v0.1.0ist die in Artifact Registry gespeicherte Version.
Erstellen Sie im Verzeichnis
bareine Datei namensmain.gomit 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 Modul „bar“ aus:
go run .
Die Ausgabe sollte so aussehen:
Hello World!
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud Konto für die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden.
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud Konto die auf dieser Seite 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 \ REPOSITORYErsetzen Sie Folgendes:
- LOCATION durch den regionalen oder multiregionalen Standort 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
- Authentifizierung konfigurieren
- Repositories verwalten.
- Go-Module verwalten.
- Lesen Sie unser Infomaterial zu DevOps und informieren Sie sich über das Forschungsprogramm DevOps Research and Assessment.