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 centralizadobackend "gcs".main.tf: Configuración declarativa que define el dataset finallab12_dataseta 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 -checky analizando la sintaxis conterraform validate. - Configuración del paso condicional
terraform planpara su ejecución exclusiva durante los flujos de Pull Request. - Configuración de la acción de despliegue físico
terraform apply --auto-approvecondicionada 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.