En esta página, se explica cómo conectar un repositorio de GitHub a Cloud Build. Para obtener más información sobre los repositorios de Cloud Build, consulta Repositorios de Cloud Build.
Antes de comenzar
-
Enable the Cloud Build and Secret Manager APIs.
- Ten listo tu código fuente en un repositorio de GitHub.
- Tener un
Dockerfile
o un Archivo de configuración de Cloud Build en tu repositorio de código fuente de GitHub. - Si conectas tu repositorio a Cloud Build por primera vez, asegúrate de tener permisos de administrador en él. Para obtener más información sobre los permisos del repositorio de GitHub, consulta Niveles de permiso de los repositorios de una organización.
Para usar los comandos de
gcloud
en esta página, instala Google Cloud CLI.
Permisos de IAM obligatorios
Para conectar tu host de GitHub, otorga el rol de administrador de conexión de Cloud Build (roles/cloudbuild.connectionAdmin
) a tu cuenta de usuario.
Para agregar los roles necesarios a tu cuenta de usuario, consulta Configura el acceso a los recursos de Cloud Build. Para obtener más información sobre los roles de IAM asociados con Cloud Build, consulta Roles y permisos de IAM.
Para crear conexiones con los pasos de instalación de gcloud
, otorga el rol de administrador de Secret Manager (roles/secretmanager.admin
) al agente de servicio de Cloud Build. Para ello, ejecuta el siguiente comando en tu proyecto de Google Cloud:
PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \
--role="roles/secretmanager.admin"
Conecta un host de GitHub
Console
Para conectar tu repositorio de GitHub a Cloud Build, haz lo siguiente:
Abre la página Repositorios en la consola de Google Cloud.
Verás la página Repositorios.
En el selector de proyectos de la barra superior, selecciona tu proyecto de Google Cloud.
En la parte superior de la página, selecciona la pestaña 2nd gen.
Haz clic en Crear conexión de host para conectar un host nuevo a Cloud Build.
En el panel izquierdo, selecciona GitHub como proveedor de origen.
En la sección Configurar conexión, ingresa la siguiente información:
Región: Selecciona una región para tu conexión.
Nombre: Ingresa un nombre para tu conexión.
Haz clic en Conectar.
Después de hacer clic en el botón Conectar, se te pedirá que autorices la App de GitHub de Cloud Build para acceder a tu cuenta de GitHub Puedes revocar el acceso a la app si la desinstalas o borras de tu host en cualquier momento.
Cloud Build solicita la autorización de tu cuenta de usuario de GitHub y almacena el token de autorización resultante como un Secret en tu proyecto. El token de autorización se usa para validar el acceso de tu cuenta de usuario para la instalación de la app de GitHub de Cloud Build y a los repositorios vinculados. Cloud Build La cuenta del agente de servicio (
service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com
) se usa para acceder a tu secreto. Para ver tu secreto, Consulta Enumera los secretos y visualiza sus detalles.Luego de autorizar la app de GitHub de Cloud Build, podrás se redireccionará a los Repositorios de Cloud Build .
Creaste correctamente una conexión con GitHub.
gcloud
Para conectar tu host de GitHub con gcloud
, sigue estos pasos:
completa los siguientes pasos:
Ingresa el siguiente comando para iniciar una conexión con tu repositorio de GitHub:
gcloud builds connections create github CONNECTION_NAME --region=REGION
Aquí:
- CONNECTION_NAME es el nombre de la conexión.
REGION es la región del activador.
Después de ejecutar el comando
gcloud builds connections
, verás un vínculo para autorizar la app de GitHub de Cloud Build.Accede a tu cuenta de
github.com
.Sigue el vínculo para autorizar la app de GitHub de Cloud Build.
Después de autorizar la app, Cloud Build almacena un token de autenticación como un secreto en Secret Manager en tu proyecto de Google Cloud. Puedes ver tus secretos en Secret Manager .
Instala la app de GitHub de Cloud Build en tu cuenta o en una organización de tu propiedad.
Permite la instalación con tu cuenta de GitHub y selecciona el repositorio permisos cuando se te solicite.
Verifica la instalación de tu conexión de GitHub ejecutando el siguiente comando:
gcloud builds connections describe CONNECTION_NAME --region=REGION
Aquí:
- CONNECTION_NAME es el nombre de la conexión.
- REGION es la región del activador.
Si el campo
installationState
está configurado comoCOMPLETE
, significa que instaló la conexión. De lo contrario, el campoinstallationState
proporciona un vínculo para los pasos adicionales necesarios.
Creaste correctamente una conexión con GitHub.
Cómo conectar un host de GitHub de manera programática
Terraform
Puedes conectar tu host de GitHub a Cloud Build con el proveedor de Terraform de Google completando los siguientes pasos:
Instala la app de GitHub de Cloud Build en tu cuenta de GitHub o en una organización de tu propiedad.
Crea un token de acceso personal.
Asegúrate de configurar tu token para que no tenga fecha de vencimiento y selecciona los siguientes permisos cuando se te solicite en GitHub:
repo
yread:user
. Si tu app está instalada en una organización, asegúrate de seleccionar también el permisoread:org
.Después de generar el token de acceso personal, guárdalo en un lugar seguro. Usarás el token generado en la los siguientes pasos.
En el siguiente ejemplo, el fragmento de código hace lo siguiente:
Configura el proveedor de Google para Terraform
Crea un secreto para almacenar tokens de acceso personal de GitHub a fin de otorgar permisos a la de Cloud Build para acceder al Secret
Crea una conexión de GitHub.
// Configure the terraform google provider terraform { required_providers { google = {} } } // Create a secret containing the personal access token and grant permissions to the Service Agent resource "google_secret_manager_secret" "github_token_secret" { project = PROJECT_ID secret_id = SECRET_ID replication { auto {} } } resource "google_secret_manager_secret_version" "github_token_secret_version" { secret = google_secret_manager_secret.github_token_secret.id secret_data = GITHUB_PAT } data "google_iam_policy" "serviceagent_secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"] } } resource "google_secret_manager_secret_iam_policy" "policy" { project = google_secret_manager_secret.github_token_secret.project secret_id = google_secret_manager_secret.github_token_secret.secret_id policy_data = data.google_iam_policy.serviceagent_secretAccessor.policy_data } // Create the GitHub connection resource "google_cloudbuildv2_connection" "my_connection" { project = PROJECT_ID location = REGION name = CONNECTION_NAME github_config { app_installation_id = INSTALLATION_ID authorizer_credential { oauth_token_secret_version = google_secret_manager_secret_version.github_token_secret_version.id } } depends_on = [google_secret_manager_secret_iam_policy.policy] }
Aquí:
- PROJECT_NUMBER es el número de proyecto de Google Cloud.
- SECRET_ID es el ID de tu token o secreto en Secret Manager.
- GITHUB_PAT es el ID de tu token de acceso personal en GitHub.
- PROJECT_ID es tu ID del proyecto de Cloud.
- REGION es la región de tu conexión.
- CONNECTION_NAME es el nombre de tu conexión de GitHub.
- INSTALLATION_ID es el ID de instalación de tu app de GitHub de Cloud Build. Puedes encontrar tu
ID de instalación en la URL de tu app de GitHub
de Cloud Build. En la siguiente URL,
https://github.com/settings/installations/1234567
, el ID de instalación es el valor numérico1234567
.
Creaste correctamente una conexión con GitHub.
gcloud
Para conectar tu host de GitHub con un token y un ID de instalación existentes que obtuviste de una conexión anterior, completa los siguientes pasos:
Instala la app de GitHub de Cloud Build en tu cuenta de GitHub o en una organización de tu propiedad.
Crea un token de acceso personal.
Asegúrate de configurar tu token para que no tenga fecha de vencimiento y selecciona los siguientes permisos cuando se te solicite en GitHub:
repo
yread:user
. Si tu app está instalada en una organización, asegúrate de seleccionar también el permisoread:org
.Después de generar el token de acceso personal, guárdalo en un lugar seguro. Usarás el token generado en la los siguientes pasos.
Ejecuta el siguiente comando para almacenar tu token en Secret Manager en tu proyecto de Google Cloud:
echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-
Aquí:
- TOKEN es tu token de acceso personal.
- SECRET_NAME es el nombre que quieres asignarle a tu Secret en Secret Manager.
Otorga acceso al agente de servicio de Cloud Build en el secreto, donde SECRET_NAME es el nombre de tu secreto tal como se almacena en Secret Manager:
PROJECT_ID=$(gcloud config list --format="value(core.project)") PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud secrets add-iam-policy-binding SECRET_NAME \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.secretAccessor"
Crea tu conexión de GitHub:
gcloud builds connections create github CONNECTION_NAME \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/SECRET_NAME/versions/1 \ --app-installation-id=INSTALLATION_ID --region=REGION
Aquí:
- CONNECTION_NAME es el nombre de la conexión.
- PROJECT_ID es tu ID del proyecto de Cloud.
- SECRET_NAME es el nombre de tu secreto tal como está almacenado en Secret Manager.
- INSTALLATION_ID es el ID de instalación de tu app de GitHub. Tu
el ID de instalación en la URL de tu Cloud Build
App de GitHub. En la siguiente URL,
https://github.com/settings/installations/1234567
, el ID de instalación es el valor numérico1234567
. - REGION es la región de tu conexión.
Creaste correctamente una conexión con GitHub.
Conecta un repositorio de GitHub
Console
Para conectar un repositorio de GitHub a una conexión de host, completa los siguientes pasos:
Abre la página Repositorios en la consola de Google Cloud.
Verás la página Repositorios.
En la parte superior de la página, selecciona la pestaña 2nd gen.
Haz clic en Vincular repositorios para vincular repositorios desde tu conexión.
Verás el panel Conectar repositorios.
En el panel Connect Repositories, ingresa la siguiente información:
- Connection (Conexión): Selecciona una conexión en el menú desplegable.
Repositorio: Selecciona un repositorio para vincularlo a tu conexión.
Repository Name (Nombre del repositorio): ingresa un nombre para el repositorio.
- Generated: Selecciona esta opción para que Cloud Build genere automáticamente nombres de repositorio en tu nombre para los repositorios seleccionados.
Manual: Selecciona esta opción para especificar manualmente los nombres de repositorios seleccionados.
Si seleccionas Manual, puedes modificar los nombres de los repositorios seleccionados en la sección Nombres de repositorios.
Haz clic en Vincular para vincular el repositorio a tu conexión.
Ya vinculaste correctamente tu repositorio de GitHub a tu conexión.
gcloud
Para agregar un repositorio de GitHub a tu conexión, ingresa lo siguiente: :
gcloud builds repositories create REPO_NAME \
--remote-uri=REPO_URI \
--connection=CONNECTION_NAME --region=REGION
Aquí:
- REPO_NAME es el nombre del repositorio.
- REPO_URI es el vínculo a tu repositorio de GitHub. Por ejemplo,
https://github.com/cloud-build/test-repo.git
- CONNECTION_NAME es el nombre de la conexión.
- REGION es la región de tu conexión.
Ya vinculaste un repositorio a tu conexión de GitHub.
Terraform
Para agregar un repositorio de GitHub a tu conexión, agrega lo siguiente: de Terraform a tu configuración de Terraform:
resource "google_cloudbuildv2_repository" "my_repository" {
project = "PROJECT_ID"
location = "REGION"
name = "REPO_NAME"
parent_connection = google_cloudbuildv2_connection.my_connection.name
remote_uri = "URI"
}
Aquí:
- PROJECT_ID es tu ID del proyecto de Cloud.
- REPO_NAME es el nombre de tu repositorio de GitHub.
- REGION es la región de tu conexión.
- URI es el URI del host de tu repositorio. Por ejemplo,
https://github.com/myuser/myrepo.git
Ya vinculaste un repositorio a tu conexión de GitHub.
¿Qué sigue?
- Obtén más información sobre cómo compilar repositorios desde GitHub.
- Aprende a realizar implementaciones azul-verde en Compute Engine.