[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-bigquery-12":3},{"content":4,"date":5,"image":6,"sideArticles":7},"\u003C!DOCTYPE html>\r\n\u003Chtml lang=\"es\">\r\n\u003Chead>\r\n    \u003Cmeta charset=\"UTF-8\">\r\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    \u003Ctitle>Laboratorio 12: CI/CD Pipeline para BigQuery con GitHub Actions\u003C/title>\r\n    \u003Cstyle>\r\n        h1,\r\n        h2,\r\n        h3 {\r\n            color: #333;\r\n        }\r\n\r\n        ul {\r\n            list-style-type: disc;\r\n            margin-left: 20px;\r\n        }\r\n\r\n        code {\r\n            background-color: #f4f4f4;\r\n            padding: 2px 5px;\r\n            border-radius: 3px;\r\n            font-family: monospace;\r\n        }\r\n    \u003C/style>\r\n\u003C/head>\r\n\u003Cbody>\r\n\r\n    \u003Ch1>Laboratorio 12: CI/CD Pipeline para BigQuery con GitHub Actions\u003C/h1>\r\n\r\n    \u003Ch2>Objetivos del Laboratorio\u003C/h2>\r\n    \u003Cul>\r\n        \u003Cli>Eliminar por completo los despliegues de infraestructura analítica manuales desde ordenadores locales para mitigar riesgos de configuración errónea.\u003C/li>\r\n        \u003Cli>Configurar un backend remoto de Terraform en Cloud Storage para centralizar el archivo de estado físico (\u003Ccode>terraform.tfstate\u003C/code>).\u003C/li>\r\n        \u003Cli>Proteger de manera estricta las credenciales de la cuenta de servicio de GCP integrándolas como secretos encriptados en GitHub.\u003C/li>\r\n        \u003Cli>Desarrollar y probar un pipeline automatizado de integración y despliegue continuo (CI/CD) basado en confirmación de Pull Requests.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Herramientas y APIs Utilizadas\u003C/h2>\r\n    \u003Cul>\r\n        \u003Cli>\u003Ccode>GitHub Actions\u003C/code>: Plataforma de automatización y orquestación que ejecuta flujos de trabajo basados en eventos del repositorio de Git.\u003C/li>\r\n        \u003Cli>\u003Ccode>Terraform CLI\u003C/code>: Motor de orquestación de infraestructura ejecutado en contenedores remotos dentro de los servidores de GitHub.\u003C/li>\r\n        \u003Cli>\u003Ccode>Cloud Storage API\u003C/code>: Servicio de almacenamiento de objetos empleado para almacenar y bloquear el estado remoto de la plataforma.\u003C/li>\r\n        \u003Cli>\u003Ccode>BigQuery API\u003C/code>: API de Google Cloud encargada de recibir las órdenes automatizadas de despliegue analítico emitidas desde el pipeline.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Estructura del Código Desarrollado\u003C/h2>\r\n    \u003Cul>\r\n        \u003Cli>\u003Ccode>providers.tf\u003C/code>: Declaración de proveedores configurando el bloque de almacenamiento de estado centralizado \u003Ccode>backend \"gcs\"\u003C/code>.\u003C/li>\r\n        \u003Cli>\u003Ccode>main.tf\u003C/code>: Configuración declarativa que define el dataset final \u003Ccode>lab12_dataset\u003C/code> a desplegar mediante el pipeline.\u003C/li>\r\n        \u003Cli>\u003Ccode>variables.tf\u003C/code>: Parametrización de los metadatos necesarios para el despliegue automático del proyecto analítico.\u003C/li>\r\n        \u003Cli>\u003Ccode>terraform-deploy.yml\u003C/code>: Archivo de flujo de trabajo que describe los jobs de chequeo, autenticación, inicialización, formateo, validación, planeación y despliegue de infraestructura.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Paso a Paso del Despliegue\u003C/h2>\r\n\r\n    \u003Ch3>Fase 1: Preparación del Estado Remoto (GCS Backend)\u003C/h3>\r\n    \u003Cul>\r\n        \u003Cli>Creación de un bucket exclusivo en Cloud Storage con el comando de terminal \u003Ccode>gcloud storage buckets create\u003C/code>.\u003C/li>\r\n        \u003Cli>Estructuración del bloque de configuración \u003Ccode>backend \"gcs\"\u003C/code> en el archivo de proveedores de Terraform apuntando al bucket creado.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch3>Fase 2: Configuración de Credenciales de Seguridad en GitHub\u003C/h3>\r\n    \u003Cul>\r\n        \u003Cli>Creación de una cuenta de servicio dedicada en GCP asignándole permisos de administración sobre BigQuery y Cloud Storage.\u003C/li>\r\n        \u003Cli>Descarga segura del archivo de claves JSON criptográficas de la cuenta de servicio.\u003C/li>\r\n        \u003Cli>Registro y guardado de las credenciales JSON dentro de las opciones de secretos del repositorio en GitHub bajo el nombre exclusivo de \u003Ccode>GCP_SA_KEY\u003C/code>.\u003C/li>\r\n        \u003Cli>Limpieza y borrado del archivo de claves local para cumplir con las directivas de seguridad de la organización.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch3>Fase 3: Diseño e Implementación del Pipeline y Prueba en Vivo\u003C/h3>\r\n    \u003Cul>\r\n        \u003Cli>Creación del workflow de GitHub Actions definiendo disparadores sobre la rama principal \u003Ccode>main\u003C/code>.\u003C/li>\r\n        \u003Cli>Desarrollo de las tareas de verificación formateando con \u003Ccode>terraform fmt -check\u003C/code> y analizando la sintaxis con \u003Ccode>terraform validate\u003C/code>.\u003C/li>\r\n        \u003Cli>Configuración del paso condicional \u003Ccode>terraform plan\u003C/code> para su ejecución exclusiva durante los flujos de Pull Request.\u003C/li>\r\n        \u003Cli>Configuración de la acción de despliegue físico \u003Ccode>terraform apply --auto-approve\u003C/code> condicionada a fusiones directas (pushes) sobre la rama principal.\u003C/li>\r\n        \u003Cli>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.\u003C/li>\r\n    \u003C/ul>\r\n\r\n\u003C/body>\r\n\u003C/html>","July 9, 2026","https://storage.googleapis.com/mp-blog/images/curso-gcp-bigquery-12.jpg",[8,14,19,24],{"id":9,"title":10,"description":11,"image":12,"date":13},"curso-gcp-ai-ops-01","Fundamentos de AIOps en Google Cloud | Curso AIOps con Vertex AI","Módulo 1: Fundamentos de AIOps en Google Cloud. Aprende la transición de ITOps a operaciones inteligentes y cómo preparar tu infraestructura base con Terraform.","https://storage.googleapis.com/mp-blog/images/curso-gcp-ai-ops-01.jpg","May 28, 2026",{"id":15,"title":16,"description":17,"image":18,"date":13},"curso-gcp-ai-ops-02","Vertex AI para AIOps: AutoML y Despliegue | Curso AIOps","Módulo 2: Gestión de modelos con Vertex AI para AIOps. Aprende a utilizar AutoML, gestionar datasets tabulares y desplegar endpoints de predicción.","https://storage.googleapis.com/mp-blog/images/curso-gcp-ai-ops-02.jpg",{"id":20,"title":21,"description":22,"image":23,"date":13},"curso-gcp-ai-ops-03","Observabilidad Inteligente en GCP | Curso AIOps","Módulo 3: Observabilidad Inteligente en GCP. Configuración de Cloud Monitoring, Cloud Logging y creación de dashboards predictivos correlacionados con BigQuery.","https://storage.googleapis.com/mp-blog/images/curso-gcp-ai-ops-03.jpg",{"id":25,"title":26,"description":27,"image":28,"date":13},"curso-gcp-ai-ops-04","Automatización Operativa y Remediación | Curso AIOps","Módulo 4: Automatización Operativa en AIOps. Aprende a crear arquitecturas dirigidas por eventos con Cloud Functions y Pub/Sub para la remediación automática.","https://storage.googleapis.com/mp-blog/images/curso-gcp-ai-ops-04.jpg",1783609807853]