Laboratorio 12: CI/CD Pipeline para BigQuery con GitHub Actions

Laboratorio 12: CI/CD Pipeline para BigQuery con GitHub Actions

Objetivos del Laboratorio

  • Eliminar por completo los despliegues de infraestructura analítica manuales desde ordenadores locales para mitigar riesgos de configuración errónea.
  • Configurar un backend remoto de Terraform en Cloud Storage para centralizar el archivo de estado físico (terraform.tfstate).
  • Proteger de manera estricta las credenciales de la cuenta de servicio de GCP integrándolas como secretos encriptados en GitHub.
  • Desarrollar y probar un pipeline automatizado de integración y despliegue continuo (CI/CD) basado en confirmación de Pull Requests.

Herramientas y APIs Utilizadas

  • GitHub Actions: Plataforma de automatización y orquestación que ejecuta flujos de trabajo basados en eventos del repositorio de Git.
  • Terraform CLI: Motor de orquestación de infraestructura ejecutado en contenedores remotos dentro de los servidores de GitHub.
  • Cloud Storage API: Servicio de almacenamiento de objetos empleado para almacenar y bloquear el estado remoto de la plataforma.
  • BigQuery API: API de Google Cloud encargada de recibir las órdenes automatizadas de despliegue analítico emitidas desde el pipeline.

Estructura del Código Desarrollado

  • providers.tf: Declaración de proveedores configurando el bloque de almacenamiento de estado centralizado backend "gcs".
  • main.tf: Configuración declarativa que define el dataset final lab12_dataset a desplegar mediante el pipeline.
  • variables.tf: Parametrización de los metadatos necesarios para el despliegue automático del proyecto analítico.
  • terraform-deploy.yml: Archivo de flujo de trabajo que describe los jobs de chequeo, autenticación, inicialización, formateo, validación, planeación y despliegue de infraestructura.

Paso a Paso del Despliegue

Fase 1: Preparación del Estado Remoto (GCS Backend)

  • Creación de un bucket exclusivo en Cloud Storage con el comando de terminal gcloud storage buckets create.
  • Estructuración del bloque de configuración backend "gcs" en el archivo de proveedores de Terraform apuntando al bucket creado.

Fase 2: Configuración de Credenciales de Seguridad en GitHub

  • Creación de una cuenta de servicio dedicada en GCP asignándole permisos de administración sobre BigQuery y Cloud Storage.
  • Descarga segura del archivo de claves JSON criptográficas de la cuenta de servicio.
  • Registro y guardado de las credenciales JSON dentro de las opciones de secretos del repositorio en GitHub bajo el nombre exclusivo de GCP_SA_KEY.
  • Limpieza y borrado del archivo de claves local para cumplir con las directivas de seguridad de la organización.

Fase 3: Diseño e Implementación del Pipeline y Prueba en Vivo

  • Creación del workflow de GitHub Actions definiendo disparadores sobre la rama principal main.
  • Desarrollo de las tareas de verificación formateando con terraform fmt -check y analizando la sintaxis con terraform validate.
  • Configuración del paso condicional terraform plan para su ejecución exclusiva durante los flujos de Pull Request.
  • Configuración de la acción de despliegue físico terraform apply --auto-approve condicionada a fusiones directas (pushes) sobre la rama principal.
  • Lanzamiento y prueba del flujo creando una rama alternativa, abriendo un Pull Request, validando la auditoría y confirmando el merge final para verificar el despliegue automático en Google Cloud.
Newsletter GCP
¿Quieres estar al día con las últimas novedades de Google Cloud Platform? ¡Suscríbete y no te pierdas nada!