Almacena módulos de Go en Artifact Registry
Configura un repositorio privado de Go en Artifact Registry y sube un módulo y usar el módulo como dependencia.
Antes de comenzar
-
Accede a tu cuenta de Google.
Si todavía no tienes una cuenta, regístrate para obtener una nueva.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
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.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Artifact Registry API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Instala Go 1.15 o una versión posterior.
- Instala el complemento
package-go-module
de la CLI de gcloud:
gcloud components install package-go-module
Crea un repositorio
Para crear y configurar un repositorio nuevo, haz lo siguiente:
Ejecuta el siguiente comando para crear un repositorio nuevo.
gcloud artifacts repositories create REPOSITORY \ --repository-format=go \ --location=LOCATION \ --description=DESCRIPTION
Reemplaza lo siguiente:
- REPOSITORY es el nombre del repositorio. Para la ubicación de cada repositorio en un proyecto, los nombres de los repositorios deben ser únicos.
- LOCATION es la región o multirregional
ubicación
para el repositorio. Puedes omitir esta marca si estableces un
predeterminada
Para ver una lista de ubicaciones admitidas, ejecuta el comando
gcloud artifacts locations list
- DESCRIPTION es una descripción opcional del repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio no están encriptadas.
Ejecuta el siguiente comando para ver los detalles del repositorio.
gcloud artifacts repositories describe --location=LOCATION REPOSITORY
El resultado se ve de la manera siguiente:
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'
Establece valores predeterminados para los comandos de gcloud
Puedes simplificar tus comandos de gcloud CLI
si
configuras los valores predeterminados
para los valores de proyecto, repositorio y ubicación. Una vez que establezcas los valores predeterminados,
No se necesitan las etiquetas --project
, --location
ni --repository
.
Empaqueta y sube un módulo de Go
El complemento package-go-module
de gcloud CLI empaqueta tus módulos de Go.
lo que te permite crear versiones y subir archivos a Artifact Registry a través del archivo gcloud
.
Crea un módulo de Go
Primero, crea un módulo de Go simple para subirlo a tu repositorio.
En tu directorio principal, crea un directorio llamado “foo”. para tu módulo
mkdir foo
Cambia los directorios al directorio de tu módulo y ejecuta
go mod init
para crear un archivo go.mod para tu módulo.cd foo \ go mod init example.com/foo
Reemplaza
example.com/foo
por la ruta del módulo. Consulta la Referencia de los módulos de Go para obtener más información.Crea un archivo
foo.go
en tu directorio foo con el siguiente contenido:package foo const HelloWorld = "Hello World!"
Empaqueta y sube tu módulo
Empaqueta el módulo y súbelo a tu repositorio:
gcloud artifacts go upload --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --module-path=example.com/foo \ --version=VERSION \ --source=SOURCE_LOCATION
Reemplaza lo siguiente:
- PROJECT por el ID del proyecto de Google Cloud.
- REPOSITORY por el nombre del repositorio en el que se almacena el paquete.
- LOCATION por la configuración regional o multirregional ubicación del repositorio.
example.com/foo
por la ruta del módulo Consulta la Referencia de los módulos de Go para obtener más información.- VERSION con el
versión semántica
del módulo con el formato
vX.Y.Z
, en el queX
es la versión principal,Y
es la versión versión secundaria, yZ
es la versión del parche. - SOURCE_LOCATION por la ruta de acceso al directorio raíz de tu cuenta de Go
módulo. Si omites la marca
--source
, el valor predeterminado será el directorio actual.
El módulo se sube a Artifact Registry.
Para obtener más información sobre cómo crear módulos de Go, consulta este instructivo.
Enumerar módulos
Ejecuta el siguiente comando para inspeccionar el módulo de Go subido en la configuración predeterminada el proyecto, el repositorio y la ubicación cuando se configuran los valores predeterminados:
gcloud artifacts packages list
El resultado se ve de la manera siguiente:
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
Ver detalles de la versión del módulo
Ejecuta el siguiente comando para ver las versiones de tu módulo en la configuración el proyecto, el repositorio y la ubicación se configuran valores predeterminados:
gcloud artifacts versions list --package=MODULE_PATH
El resultado se ve de la manera siguiente:
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
Cómo descargar módulos
Para importar módulos almacenados en Artifact Registry, debes indicar a Go en buscar dependencias de Artifact Registry y omite el base de datos de suma de comprobación.
Configura el entorno de Go
Indica a Go que descargue módulos de Artifact Registry, el servicio público de Go del módulo, y, luego, usa el código fuente en ese orden:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Reemplaza lo siguiente:
- LOCATION es la región o multirregional ubicación del repositorio.
- PROJECT es el ID de tu proyecto de Google Cloud.
- REPOSITORY es el nombre del repositorio en el que se almacena el paquete.
Excluye tu módulo de la verificación con la base de datos pública de suma de comprobación:
export GONOSUMDB=MODULE_PATH_REGEX
Reemplaza MODULE_PATH_REGEX por la ruta de acceso de tu módulo o una regex si quieres excluir varios módulos.
Para excluir el módulo
example.com/foo
de la verificación con la base de datos de sumas de comprobación pública, ejecuta el siguiente comando:export GONOSUMDB=example.com/foo
Si deseas que todos los módulos con rutas de acceso que comienzan en
example.com
no se verifiquen con la base de datos de sumas de comprobación públicas, ejecuta el siguiente comando:export GONOSUMDB=example.com/*
Autentícate en Artifact Registry
Cuando descargues módulos de Go empaquetados para usarlos como dependencias de Artifact Registry, el objeto binario de Go, usa las credenciales de tu archivo netrc para autenticarse en Artifact Registry. Para simplificar la autenticación puedes usar el auxiliar de credenciales de Go para actualizar los tokens en tu archivo netrc para la autenticación en Artifact Registry.
La ubicación de tu archivo netrc se puede establecer con la variable de entorno netrc.
Si no se configura la variable NETRC
, el comando go
leerá
$HOME/.netrc
en plataformas similares a UNIX o %USERPROFILE%\_netrc
en Windows
Artifact Registry admite los siguientes métodos de autenticación.
- Credenciales de corta duración (recomendado)
- Usar la herramienta auxiliar de credenciales de Go de Artifact Registry para actualizar los tokens de autenticación en tu archivo netrc.
- Usa una clave de cuenta de servicio
Usa esta opción cuando no puedas usar credenciales en tu entorno para la autenticación de varios factores. Agrega la clave de la cuenta de servicio sin encriptar a tu archivo netrc.
Agrega el auxiliar de credenciales de Go a GONOPROXY
.
Antes de usar el auxiliar de credenciales de Go, debes agregarlo a la lista GONOPROXY
.
para forzar a Go para que lo descargue directamente desde GitHub. Si tienes otros módulos
que quieres descargar directamente de la fuente, puedes agregarlos
separados por comas
como se muestra en el siguiente ejemplo:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Donde MODULE_PATH1 y MODULE_PATH2 son rutas de acceso de módulos de los módulos que se descargarán desde la fuente.
Para agregar el auxiliar de credenciales de Go a tu lista de GONOPROXY
y ejecutarlo para configurar tu
credenciales:
Agrega el auxiliar de credenciales de Go a tu
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Ejecuta el siguiente comando para agregar tus credenciales de Artifact Registry a la netrc con la herramienta del paquete del módulo de Go:
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]
En el que LOCATION es la región o multirregional ubicación de tu repositorio. Para agregar varias ubicaciones, ingrésalas como una coma. lista separada.
El auxiliar de credenciales de Go agrega parámetros de configuración a tu archivo netrc para la autenticación. a Artifact Registry. Si pasas la marca
--json_key
, se agregará la clave tu archivo netrc para autenticar con contraseña.
Cómo usar tu módulo como dependencia
Si usas credenciales de corta duración para autenticarte en Artifact Registry, deberás actualizar tu token de OAuth ejecutando el siguiente comando:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
En tu directorio principal, crea un directorio llamado "bar".
mkdir bar
Cambia los directorios al directorio de tu módulo y ejecuta
go mod init
para crear un archivogo.mod
para tu paquete.cd bar \ go mod init example.com/bar
Reemplaza
example.com/bar
por la ruta de acceso del módulo. Consulta la Referencia de los módulos de Go para obtener más información.Para solicitar la versión de foo almacenada en Artifact Registry, edita tu
go.mod
de modo que se vea de la siguiente manera:module example.com/bar go 1.19 require example.com/foo v0.1.0
Reemplaza lo siguiente:
example.com/foo
es la ruta de acceso del módulo requerido.v0.1.0
es la versión almacenada en Artifact Registry.
Crea un archivo
main.go
en el directoriobar
con la siguiente información: contenidos:package main import ( "fmt" foo "example.com/foo" ) func main() { fmt.Println(foo.HelloWorld) }
Ejecuta go mod tidy para descargar dependencias, incluido el paquete foo:
go mod tidy
Ejecuta el módulo de barra:
go run .
El resultado se ve de la manera siguiente:
Hello World!
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página. Antes de quitar el repositorio, asegúrate de que los módulos que quieres conservar estén disponibles en otra ubicación.
Para borrar el repositorio, haz lo siguiente:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Reemplaza lo siguiente:
- LOCATION por la configuración regional o multirregional ubicación del repositorio.
- PROJECT por el ID del proyecto de Google Cloud.
- REPOSITORY por el nombre del repositorio
Si deseas quitar la configuración predeterminada del repositorio y la ubicación que para la configuración activa de gcloud, ejecuta los siguientes comandos:
gcloud config unset artifacts/repository gcloud config unset artifacts/location
¿Qué sigue?
- Obtén más información para configurar la autenticación.
- Obtén más información para administrar repositorios.
- Obtén más información para administrar módulos de Go.
- Lee nuestros recursos sobre DevOps y explora la Programa de investigación DevOps Research and Assessment.