En esta página, se describe cómo configurar Cloud Build para almacenar artefactos compilados en un repositorio de Artifact Registry.
Antes de comenzar
- Si el repositorio de destino no existe en Artifact Registry, crea un repositorio nuevo.
Si Cloud Build y tu repositorio están en proyectos diferentes o si usas una cuenta de servicio especificada por el usuario para ejecutar otorgar el rol de escritor de Artifact Registry a la cuenta de servicio de compilación en el proyecto con los repositorios.
La cuenta de servicio predeterminada de Cloud Build tiene acceso para realizar las siguientes acciones con un repositorio en el mismo proyecto de Google Cloud:
- Sube y descarga artefactos
- Crea repositorios de gcr.io en Artifact Registry
Configura una compilación de Docker
Después de otorgar permisos para el repositorio de destino, puedes configurar tu compilación.
Para configurar tu compilación, haz lo siguiente:
En el archivo de configuración de compilación, agrega el paso para compilar y etiquetar la imagen.
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ] images: - '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
En este fragmento, se usan sustituciones de Cloud Build. Este enfoque es útil si deseas usar el mismo archivo de configuración de compilación para enviar imágenes a los repositorios para diferentes entornos, como pruebas, etapa de pruebas o producción.
${_LOCATION}
,${_REPOSITORY}
y${_IMAGE}
son sustituciones definidas por el usuario para la ubicación, el nombre y la imagen del repositorio. Especificas los valores de estas variables en el tiempo de compilación.$PROJECT_ID
es una sustitución predeterminada que Cloud Build resuelve con el ID del proyecto de Google Cloud para la compilación.- Si ejecutas el comando
gcloud builds submit
, Cloud Build usa el ID del proyecto activo en la sesión de gcloud. - Si usas un activador de compilación, Cloud Build usa el ID del proyecto en el que se ejecuta Cloud Build.
Como alternativa, puedes usar una sustitución definida por el usuario en lugar de
$PROJECT_ID
para especificar un ID de proyecto en el momento de la compilación.- Si ejecutas el comando
Cuando todo esté listo para ejecutar la compilación, especifica los valores para las sustituciones definidas por el usuario. Por ejemplo, este comando sustituye lo siguiente:
us-east1
para la ubicación del repositoriomy-repo
para el nombre del repositoriomy-image
para el nombre de la imagen
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_IMAGE="my-image" .
Configura una compilación de Go
Después de otorgar permisos para el repositorio de destino, puedes configurar tu compilación. En las siguientes instrucciones, se describe cómo configurar tu compilación para subir un módulo de Go a un repositorio de Go.
Para configurar tu compilación, sigue estos pasos:
Para subir un módulo Go a tu repositorio de Go en tu compilación, agrega los siguientes pasos a tu archivo de configuración de compilación:
steps: - name: gcr.io/cloud-builders/gcloud args: - 'artifacts' - 'go' - 'upload' - '--project=$PROJECT_ID' - '--location=${_LOCATION}' - '--repository=${_REPOSITORY}' - '--module-path=${_MODULE_PATH}' - '--version=$TAG_NAME'
El archivo de configuración de compilación incluye sustituciones de Cloud Build. Este enfoque es útil si deseas usar el mismo archivo de configuración de compilación para subir paquetes a repositorios para entornos diferentes, como de pruebas, de etapa de pruebas o de producción.
${_LOCATION}
,${_REPOSITORY}
y${_MODULE_PATH}
son sustituciones definidas por el usuario para la ubicación, el nombre y la ruta de acceso del módulo del repositorio. Debes especificar los valores para estas variables al momento de la compilación.$PROJECT_ID
y$TAG_NAME
son sustituciones predeterminadas que Cloud Build reemplaza por lo siguiente:$PROJECT_ID
se reemplaza por el ID del proyecto de Google Cloud para la compilación.- Si ejecutas el comando
gcloud builds submit
, Cloud Build usa el ID de proyecto activo en la sesión de gcloud. - Si usas un activador de compilación, Cloud Build usa el ID del proyecto en el que se ejecuta Cloud Build.
Como alternativa, puedes usar una sustitución definida por el usuario en lugar de
$PROJECT_ID
para especificar un ID de proyecto en el momento de la compilación.- Si ejecutas el comando
$TAG_NAME
se reemplaza por el nombre de tu etiqueta para admitir la convención de Go de usar etiquetas de Git como números de versión.
Para instalar el paquete desde el repositorio de Go, agrega los siguientes pasos a tu archivo de configuración de compilación:
- Agrega un extremo regional de Artifact Registry en la ubicación de tu repositorio al archivo
.netrc
. - Ejecuta la herramienta de ayuda de credenciales para actualizar los tokens de OAuth.
- Ejecuta el comando
go run
. También puedes cambiar esto ago build
para Compila el módulo,go test
para ejecutar pruebas ogo mod tidy
para descargar las dependencias.
Para el paso del comando
go
,GOPROXY
se establece en el Repositorio de Artifact Registry que aloja dependencias privadas Puedes agregar el proxy público a la listaGOPROXY
separada por comas si el módulo tiene dependencias públicas.steps: - name: golang entrypoint: go args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'add-locations', '--locations=${_LOCATION}'] env: # Set GOPROXY to the public proxy to pull the credential helper tool - 'GOPROXY=https://proxy.golang.org' - name: golang entrypoint: go args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'refresh'] env: # Set GOPROXY to the public proxy to pull the credential helper tool - 'GOPROXY=https://proxy.golang.org' - name: golang entrypoint: go args: ['run', '.'] env: - 'GOPROXY=https://${_LOCATION}-go.pkg.dev/${_PROJECT_ID}/${_REPOSITORY}' options: env: # Disable GO sumdb checks for private modules. - 'GONOSUMDB=${_MODULE_PATH}'
- Agrega un extremo regional de Artifact Registry en la ubicación de tu repositorio al archivo
Cuando estés listo para ejecutar la compilación, especifica valores para la configuración sustituciones de datos. Por ejemplo, este comando sustituye lo siguiente:
us-east1
para la ubicación del repositoriomy-project
para el ID del proyectomy-repo
para el nombre del repositorioexample.com/greetings
para la ruta de acceso del módulo
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_PROJECT_ID="my-project",_REPOSITORY="my-repo",_MODULE_PATH="example.com/greetings" .
Configura una compilación de Java
Después de otorgar permisos al repositorio de destino, puedes configurar tu compilación. En las siguientes instrucciones, se describe cómo configurar tu compilación para subir un paquete de Java a un repositorio de Maven.
Para configurar tu compilación, sigue estos pasos:
Configura la autenticación para Maven. Asegúrate de especificar el proyecto de destino y el repositorio correctos en tu archivo
pom.xml
.En tu archivo de configuración de compilación de Cloud Build, agrega el paso para subir el paquete con Maven:
steps: - name: gcr.io/cloud-builders/mvn args: ['deploy']
Cuando tengas listo el archivo de configuración de compilación, comienza la compilación con el siguiente comando:
gcloud builds submit
Configura una compilación de Node.js
Después de otorgar permisos para el repositorio de destino, puedes configurar tu compilación. En las siguientes instrucciones, se describe cómo configurar tu compilación para subir un paquete de Node.js a un repositorio de npm.
Para configurar tu compilación, sigue estos pasos:
Agrega tu repositorio de Artifact Registry al archivo
.npmrc
en tu Node.js en un proyecto final. Se ubica en el directorio con el archivopackage.json
.@SCOPE:registry=https://LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY //LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY/:always-auth=true
- SCOPE-NAME es el nombre del permiso de la Administración de socios de red que se debe asociar con el repositorio. El uso de alcances garantiza que siempre publices e instales paquetes desde el repositorio correcto.
- PROJECT_ID es tu ID del proyecto de Cloud.
- LOCATION es la ubicación regional o multirregional del repositorio.
- REPOSITORY es el nombre del repositorio.
Agrega una secuencia de comandos que se actualice al archivo
package.json
de tu proyecto. el token de acceso para la autenticación con el repositorio."scripts": { "artifactregistry-login": "npx google-artifactregistry-auth" }
En tu archivo de configuración de compilación, agrega el paso para subir el paquete al repositorio.
steps: - name: gcr.io/cloud-builders/npm args: ['run', 'artifactregistry-login'] - name: gcr.io/cloud-builders/npm args: ['publish', '${_PACKAGE}']
${_PACKAGE}
es una sustitución de Cloud Build que representa el directorio de tu proyecto de Node.js. Puedes especificar el directorio cuando ejecutes el comando para compilar.Por ejemplo, este comando sube el paquete desde un directorio llamado
src
:gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_PACKAGE="src" .
Configura una compilación de Python
Después de otorgar permisos al repositorio de destino, puedes configurar tu compilación. En las siguientes instrucciones, se describe cómo configurar tu compilación subir un paquete de Python a un repositorio de Python y, luego, instalarlo con pip.
Para compilar y organizar en contenedores una aplicación de Python y, luego, enviarla a un repositorio de Docker, consulta Cómo compilar aplicaciones de Python en la documentación de Cloud Build.
Para configurar tu compilación, sigue estos pasos:
En el directorio con tu archivo de configuración de compilación de Cloud Build, crea una llamado
requirements.txt
con las siguientes dependencias:twine keyrings.google-artifactregistry-auth
- Twine es para subiendo paquetes a Artifact Registry.
- keyrings.google-artifactregistry-auth es el backend del llavero de claves de Artifact Registry que con Artifact Registry para Twine y pip.
Para subir un paquete de Python a tu repositorio de Python en tu compilación, agrega los siguientes pasos a tu archivo de configuración de compilación:
steps: - name: python entrypoint: pip args: ["install", "-r", "requirements.txt", "--user"] - name: python entrypoint: python args: - '-m' - 'twine' - 'upload' - '--repository-url' - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/' - 'dist/*'
En este fragmento, el primer paso instala Twine y el backend de llaveros de Artifact Registry. En el segundo paso, se suben tus archivos de Python compilados al Subdirectorio
dist
. Ajusta las rutas arequirements.txt
y tu compilaron archivos de Python si no coinciden con el fragmento.La ruta de acceso del repositorio incluye sustituciones de Cloud Build. Este enfoque es útil si quieres usar el mismo archivo de configuración de compilación para subir paquetes a los repositorios entornos diferentes, como pruebas, etapa de pruebas o producción.
${_LOCATION}
y${_REPOSITORY}
son sustituciones definidas por el usuario para la ubicación, el nombre y el nombre del paquete del repositorio. Especificas los valores de estas variables en el momento de la compilación.$PROJECT_ID
es una sustitución predeterminada que Cloud Build resuelve con el ID del proyecto de Google Cloud para la compilación.- Si ejecutas el comando
gcloud builds submit
, Cloud Build usa el ID del proyecto activo en la sesión de gcloud. - Si usas un activador de compilación, Cloud Build usa el ID del proyecto en el que se ejecuta Cloud Build.
Como alternativa, puedes usar una sustitución definida por el usuario en lugar de
$PROJECT_ID
para especificar un ID de proyecto en el momento de la compilación.- Si ejecutas el comando
Para instalar el paquete desde el repositorio de Python, agrega un paso a tu compilación de configuración que ejecute el comando
pip install
.steps: - name: python entrypoint: pip args: - 'install' - '--index-url' - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/simple/' - '${_PACKAGE}' - '--verbose'
Este fragmento incluye una sustitución
${_PACKAGE}
adicional para el nombre del paquete.Cuando todo esté listo para ejecutar la compilación, especifica los valores para las sustituciones definidas por el usuario. Por ejemplo, este comando sustituye lo siguiente:
us-east1
para la ubicación del repositoriomy-repo
para el nombre del repositoriomy-package
para el nombre del paquete
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_PACKAGE="my-package" .