Saltar al contenido
Lakehouse LabLakehouse LabPreparación Databricks Data Engineer
Módulo 29 · Professional

CI/CD

Contenido abierto

Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.

Professional

Declarative Automation Bundles y CI/CD

Define recursos como código y promociona el mismo artefacto validado entre targets.

Lectura pública
Al terminar podrás
  • Estructurar un bundle completo
  • Validar y desplegar con CLI
  • Integrar identidad de servicio y pipeline Git
Ver fuentes y revisión

Metadatos editoriales

Última revisión
21 jul 2026
Nivel
Professional
Ruta relacionada
delivery
Dominios blueprint
Deploying CI/CD · Databricks CLI
Estado
Revisión editorial interna
Fuentes principales
What are Declarative Automation Bundles? · Bundle command group
Reportar un error
01
Modelo mental

Bundle configuration y includes

Modela código, artefactos y recursos Databricks como una unidad declarativa versionada mediante Declarative Automation Bundles.

Objetivo
Modela código, artefactos y recursos Databricks como una unidad declarativa versionada mediante Declarative Automation Bundles.
Duración estimada
17 min aprox.
Dificultad
Professional
Prerrequisitos
m28
Reportar un error en esta lección

Declarative Automation Bundles —antes Asset Bundles— describen jobs, pipelines, permisos, artefactos y configuración junto al código. `databricks.yml` identifica el bundle y puede incluir ficheros por dominio; `resources` usa el esquema de las APIs de Databricks, mientras `artifacts` construye wheels u otros entregables. `sync` controla qué fuentes se envían al workspace.

Un bundle no reemplaza Terraform para infraestructura de cuenta o nube. Su frontera natural son recursos del proyecto dentro de Databricks. Evita un YAML monolítico: separa `resources/jobs.yml`, `resources/pipelines.yml` y variables; valida que referencias como `${resources.jobs.orders.id}` se resuelven sin hardcodear IDs entre ambientes.

Modelo mental

Declarative Automation Bundles describen un proyecto Databricks completo como código: fuentes, artefactos, recursos, variables, permisos y targets forman una unidad que puede revisarse y desplegarse repetidamente. Desde el 16 de marzo de 2026 este es el nombre oficial de la capacidad antes llamada Databricks Asset Bundles; el blueprint Professional vigente, publicado antes del cambio, conserva Asset Bundles, pero ambos nombres señalan el mismo mecanismo evaluable. El bundle no sustituye el aprovisionamiento de toda la cuenta ni convierte cualquier script en infraestructura declarativa. Su frontera es el proyecto y sus recursos de aplicación, como Lakeflow Jobs y pipelines, enlazados a código versionado y a una identidad de despliegue.

Declarative Automation Bundle

Definición versionada de un proyecto Databricks que agrupa código, artefactos, configuración y recursos desplegables mediante la CLI.

Hace revisables y repetibles tanto la lógica como la configuración operativa que antes podía cambiarse manualmente.
Asset Bundles

Nombre anterior de Declarative Automation Bundles, todavía presente en el blueprint Professional del 30 de noviembre de 2025.

Reconocer el alias evita tratar una pregunta de examen como producto obsoleto o diferente del mecanismo actual.
Recurso declarativo

Objeto de workspace cuya configuración deseada se expresa en YAML, como un Lakeflow Job, pipeline o dashboard compatible.

Permite revisar diferencias, aplicar despliegues coherentes y reconstruir configuración sin edición manual del entorno.
YAMLAnatomía mínima de un bundle
bundle:
  name: orders-platform

include:
  - resources/*.yml

artifacts:
  default:
    type: whl
    build: python -m build
    path: .

sync:
  include:
    - src/**
    - tests/**
  exclude:
    - .venv/**

El recurso job puede vivir en `resources/orders.job.yml` y referenciar la wheel construida por el artefacto.

Puntos clave

  • El bundle une configuración de recursos y artefactos versionados.
  • Usa includes y referencias en lugar de duplicar IDs.
  • Mantén fuera credenciales e infraestructura cloud no propia del proyecto.

Evita

  • Guardar host, token o contraseña dentro de `databricks.yml`.
  • Usar bundles para crear redes, buckets y metastores que pertenecen a otra capa de infraestructura.

Recuerdo activo

¿Qué ventaja aporta referenciar un job por `${resources.jobs.<key>.id}`?

Borrador privado · solo en este navegador
02
Implementación

Resources: jobs y pipelines

Define targets dev, test y prod con overrides mínimos, rutas aisladas y modos que expresen claramente la intención de cada ambiente.

Objetivo
Define targets dev, test y prod con overrides mínimos, rutas aisladas y modos que expresen claramente la intención de cada ambiente.
Duración estimada
17 min aprox.
Dificultad
Professional
Prerrequisitos
m28
Reportar un error en esta lección

Un target aplica variables, workspace, modo y overrides a la misma definición base. Development mode añade aislamiento apropiado al desarrollador y permite iteración; production mode aplica validaciones y nombres estables. Las variables cambian catálogo, esquema, policy o warehouse, pero no deben duplicar toda la definición del job.

Usa `${bundle.target}` y `${workspace.current_user.userName}` para rutas de desarrollo, y una identidad de despliegue estable en producción. Define `run_as` de forma explícita: quien despliega no tiene por qué ser quien ejecuta. Antes de promocionar, compara el plan para detectar eliminaciones o reemplazos inesperados.

Modelo mental

Un target no es una copia completa del proyecto, sino una transformación controlada de una base común. La configuración compartida expresa lo que debe permanecer idéntico; los overrides declaran sólo diferencias legítimas como workspace, identidad, catálogo, schedule o escala. Los modos development y production añaden comportamientos convencionales y guardrails, pero no reemplazan una revisión explícita de cada diferencia. El aislamiento usa root paths, schemas y nombres que impiden colisión entre desarrolladores o ambientes. Si cada target contiene una segunda definición completa, el drift queda incorporado al diseño. Si no hay ninguna diferencia, producción puede heredar rutas o permisos de desarrollo. La meta es minimizar variación sin fingir que seguridad y capacidad son iguales.

Target

Configuración nombrada que selecciona workspace, modo, variables y overrides para desplegar el mismo proyecto en un ambiente concreto.

Permite promoción repetible sin mantener copias divergentes de código y recursos para desarrollo, test y producción.
Override mínimo

Diferencia explícita limitada a aquello que realmente cambia entre ambientes, heredando el resto desde una base compartida.

Reduce drift y hace visible qué propiedades productivas no fueron ejercitadas de forma equivalente en test.
Root path

Ruta de workspace usada por el bundle para almacenar archivos y estado desplegados bajo una identidad y target.

Un diseño único por ambiente o desarrollador evita colisiones, sobrescrituras y ownership ambiguo entre despliegues.
YAMLTargets con variables y modos
variables:
  catalog:
    description: Catálogo de datos del target

targets:
  dev:
    mode: development
    default: true
    variables:
      catalog: dev
    workspace:
      root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/${bundle.target}

  prod:
    mode: production
    variables:
      catalog: prod
    run_as:
      service_principal_name: ${var.prod_run_as}

Declara `prod_run_as` por un canal seguro de configuración; no pegues credenciales ni un ID de usuario personal.

Puntos clave

  • Una base común reduce drift; targets sólo expresan diferencias reales.
  • Aísla rutas y nombres de desarrollo por usuario/target.
  • Separa deployment identity de `run_as` del workload.

Evita

  • Copiar el job entero dentro de cada target y permitir que sus DAG diverjan.
  • Ejecutar producción como el desarrollador que lanzó el deploy.

Recuerdo activo

¿Por qué `run_as` debe separarse del usuario que ejecuta `bundle deploy`?

Borrador privado · solo en este navegador
03
Operación

Variables, substitutions y targets

Usa `validate`, `plan`, `deploy` y `run` como puertas distintas; no conviertas un deploy correcto en prueba suficiente del workload.

Objetivo
Usa `validate`, `plan`, `deploy` y `run` como puertas distintas; no conviertas un deploy correcto en prueba suficiente del workload.
Duración estimada
17 min aprox.
Dificultad
Professional
Prerrequisitos
m28
Reportar un error en esta lección

`bundle validate` resuelve configuración y comprueba el esquema contra el target. `bundle plan` muestra acciones previstas sin aplicarlas. `bundle deploy` sincroniza artefactos y recursos, y `bundle run` ejecuta un recurso ya desplegado. Una pipeline segura captura el plan, requiere aprobación para cambios destructivos y despliega el mismo artefacto validado.

La validación no ejecuta SQL ni demuestra permisos de datos del `run_as`. Después del deploy, ejecuta un smoke test con parámetros y datos acotados, comprueba estado y contrato, y sólo entonces habilita triggers o tráfico productivo. Usa `bundle summary` y output estructurado para trazabilidad.

Modelo mental

Validate, plan, deploy y run responden preguntas diferentes. Validate comprueba que la configuración compone y referencia elementos válidos; plan muestra el cambio esperado sin aplicarlo; deploy materializa recursos y artefactos; run ejecuta un recurso ya desplegado. Ninguna etapa implica automáticamente la siguiente. Un YAML válido puede describir un cambio destructivo, un despliegue correcto puede contener código defectuoso y un run exitoso puede publicar datos semánticamente erróneos. La entrega robusta coloca evidencia entre transiciones: revisión del plan, aprobación según ambiente, smoke y validación de datos. En el blueprint anterior, estas operaciones aparecen bajo Asset Bundles; en la CLI actual pertenecen a Declarative Automation Bundles y conservan el mismo razonamiento.

Validación de bundle

Comprobación estática de estructura, tipos, referencias y configuración resuelta para un target antes de modificar recursos remotos.

Detecta errores baratos temprano, aunque no garantiza seguridad del cambio ni corrección del código ejecutado.
Plan de despliegue

Representación previa de las acciones que alinearían los recursos reales con la configuración declarada del bundle.

Permite revisar actualizaciones o eliminaciones inesperadas antes de que afecten un ambiente compartido o productivo.
Smoke run

Ejecución pequeña posterior al despliegue que confirma arranque, identidad, dependencias y un recorrido crítico del recurso.

Cubre la brecha entre recursos creados correctamente y un workload realmente capaz de operar en ese ambiente.
CLISecuencia segura de promoción
databricks bundle validate -t test
databricks bundle plan -t test
databricks bundle deploy -t test
databricks bundle run -t test orders_smoke -- --business_date 2026-07-20

# Tras aprobar evidencia y el plan de prod:
databricks bundle plan -t prod
databricks bundle deploy -t prod

No uses `--force` para saltar validaciones de rama como comportamiento normal de CI.

Puntos clave

  • Validate comprueba configuración; plan anticipa cambios; deploy aplica; run verifica ejecución.
  • Revisa manualmente cambios destructivos antes de desplegar.
  • Añade smoke test post-deploy antes de activar producción.

Evita

  • Desplegar directamente en prod sin leer un plan que elimina o reemplaza recursos.
  • Confundir bundle validado con job funcional sobre datos y permisos reales.

Recuerdo activo

¿Qué aporta `bundle plan` que no aporta `bundle validate`?

Borrador privado · solo en este navegador
04
Diagnóstico

validate, deploy y run

Autentica CI con OAuth y aplica promoción por ambientes sin tokens personales, rebuilds ni edición manual del workspace.

Objetivo
Autentica CI con OAuth y aplica promoción por ambientes sin tokens personales, rebuilds ni edición manual del workspace.
Duración estimada
17 min aprox.
Dificultad
Professional
Prerrequisitos
m28
Reportar un error en esta lección

CI debe usar workload identity federation o un service principal con OAuth y permisos limitados al workspace/recursos destino. Los secretos, hosts y client IDs viven en el sistema de CI o perfiles seguros. Un PAT personal tiene ciclo de vida humano, privilegios difíciles de justificar y riesgo de exposición; no es la identidad productiva adecuada.

Construye y prueba la wheel, publica un manifiesto de hash, despliega en test y promueve el mismo artefacto a prod. Protege el ambiente prod con aprobación y branch policy. Prohíbe ediciones manuales de recursos gestionados por bundle o documenta un proceso de importación del cambio, porque el siguiente deploy puede sobrescribir drift.

Modelo mental

CI es un actor de producción y debe tener identidad propia. OAuth para un service principal entrega credenciales renovables o de corta duración y separa claramente automatización de una persona; un personal access token ata continuidad, auditoría y revocación al usuario que lo creó. La promoción no significa reconstruir: CI toma el artefacto cuyo hash superó pruebas, autentica contra el target y aplica sólo permisos de despliegue y ejecución requeridos. Separar identidades por ambiente limita blast radius, aunque una organización puede optar por un principal común con acceso explícito cuando su modelo lo justifica. En ambos casos, los secretos viven en el proveedor de CI y nunca en databricks.yml, logs o wheel.

OAuth M2M

Flujo de autorización máquina a máquina mediante el cual un service principal obtiene tokens sin depender de una sesión humana.

Mejora rotación, continuidad y atribución de CI frente a credenciales personales de larga duración.
Service principal

Identidad no humana gobernada que representa una aplicación o automatización y recibe permisos explícitos en cada workspace.

Separa responsabilidad del pipeline respecto a usuarios y permite mínimo privilegio, auditoría y revocación independientes.
Promoción inmutable

Movimiento del mismo artefacto probado entre ambientes sin reconstruir ni modificar sus bytes durante el proceso.

Garantiza que la evidencia de test corresponde exactamente al código que finalmente alcanza producción.
YAMLContrato conceptual de una promoción CI
promotion:
  source_commit: 4f2c9ab
  artifact: orders_pipeline-1.4.0-py3-none-any.whl
  sha256: "<sha256-verificado-en-ci>"
  deploy_identity: sp-data-platform-cicd
  run_identity: sp-orders-prod
  gates:
    - bundle_plan_approved
    - integration_tests_passed
    - rollback_version_recorded

El fichero ilustra evidencia; las credenciales se obtienen por OAuth y nunca se escriben en el manifiesto.

Puntos clave

  • CI usa OAuth y service principal de mínimo privilegio.
  • El mismo hash atraviesa test y producción.
  • Los recursos declarativos no se editan manualmente sin reconciliar código.

Evita

  • Reutilizar un PAT de administrador para todos los workspaces.
  • Volver a construir el paquete en cada ambiente y perder identidad del artefacto.

Recuerdo activo

¿Por qué un PAT personal es una mala dependencia de producción?

Borrador privado · solo en este navegador
05
Decisión de diseño

CI/CD, service principals y approvals

Gestiona drift, ownership, permisos y rollback como parte del bundle para que un despliegue sea reversible y auditable.

Objetivo
Gestiona drift, ownership, permisos y rollback como parte del bundle para que un despliegue sea reversible y auditable.
Duración estimada
17 min aprox.
Dificultad
Professional
Prerrequisitos
m28
Reportar un error en esta lección

Un recurso creado manualmente puede incorporarse mediante generación o binding según soporte, pero primero hay que decidir quién será su fuente de verdad. Dos bundles no deben gestionar el mismo job. Usa permisos declarados, nombres estables y ownership operativo; revisa el plan cuando cambia la identidad o la ruta raíz porque puede aparentar un recurso nuevo.

Rollback normalmente despliega la última versión conocida del bundle y artefacto, no restaura datos automáticamente. Los cambios de esquema requieren una estrategia compatible hacia delante y hacia atrás. Conserva manifest, plan y resultados de smoke test por release; si un deploy falla a mitad, inspecciona el estado real antes de relanzar.

Modelo mental

El estado declarado, el estado desplegado y el estado que realmente ejecuta producción pueden divergir. Drift aparece cuando alguien edita un recurso fuera del bundle, otra automatización comparte ownership o una referencia externa cambia. El bundle necesita una frontera de propietario: un recurso tiene una fuente de verdad y una identidad autorizada a modificarlo. Permissions también son configuración y deben evitar que el deploy se quite a sí mismo acceso o conceda control excesivo. Rollback no siempre es aplicar el commit anterior: código, schema y datos pueden haber evolucionado. Una estrategia reversible conserva artefactos, planes, compatibilidad hacia atrás y procedimientos para detener, redeployar o avanzar con una corrección.

Drift

Diferencia entre la configuración versionada que se considera deseada y el estado real modificado por personas o automatizaciones externas.

Hace que despliegues sean impredecibles y puede reintroducir cambios manuales, permisos incorrectos o recursos huérfanos.
Frontera de ownership

Regla que asigna una única fuente de verdad y responsables autorizados para gestionar cada recurso desplegado.

Evita que dos sistemas compitan por el mismo objeto y sobrescriban mutuamente su configuración.
Expand-contract

Estrategia de cambio que añade primero compatibilidad nueva, migra consumidores y retira después la forma anterior.

Mantiene una ventana donde versiones adyacentes funcionan y hace viable rollback sin revertir datos destructivamente.
CLIInventario antes de reconciliar un recurso existente
databricks bundle validate -t prod
databricks bundle plan -t prod
databricks bundle summary -t prod

# Si el job ya existe, documenta ownership y usa el flujo
# de generación/binding soportado en lugar de duplicarlo.

No ejecutes binding a ciegas: confirma que ningún otro bundle o proceso gestiona ese recurso.

Puntos clave

  • Un recurso tiene una sola fuente de verdad y un único bundle propietario.
  • Rollback de configuración no revierte side effects de datos.
  • Revisa plan y estado real antes de reparar un deploy parcial.

Evita

  • Crear un job duplicado porque cambió `root_path` o la identidad del bundle.
  • Creer que desplegar la versión anterior revierte filas ya escritas.

Recuerdo activo

¿Qué no resuelve por sí solo volver a desplegar el bundle anterior?

Borrador privado · solo en este navegador
5 lecciones pendientes

Fuente revisada · vista externa

bundle-examples

bundle-examples · commit c1db792

default_python/src/sample_notebook.ipynb

Lectura en GitHub

Este notebook se abre desde su fuente revisada

El repositorio no permite republicar su contenido dentro de Lakehouse Lab. Conservamos la misma experiencia lateral, la ruta exacta y el commit auditado, y dejamos la lectura en GitHub para respetar la autoría.

Autor
Databricks
Licencia
Databricks License
Formato
bundle
Ver notebook en GitHub