Compartir a través de


Ejecutar un flujo de trabajo de CI/CD con una agrupación de recursos de Databricks y Acciones de GitHub

En este artículo se describe cómo ejecutar un flujo de trabajo de CI/CD (integración continua e implementación continua) en GitHub con Acciones de GitHub y una agrupación de recursos de Databricks. Consulte ¿Qué son las agrupaciones de recursos de Databricks?

Puede usar Acciones de GitHub junto con los comandos bundle de la CLI de Databricks para automatizar, personalizar y ejecutar los flujos de trabajo de CI/CD desde los repositorios de GitHub.

Puede agregar archivos YAML de Acciones de GitHub, como los siguientes, al directorio .github/workflows del repositorio. En el ejemplo siguiente del archivo YAML de Acciones de GitHub se valida, implementa y ejecuta el trabajo especificado en la agrupación dentro de un destino de preproducción denominado "qa", tal y como se define dentro de un archivo de configuración de agrupación. Este ejemplo de archivo YAML de Acciones de GitHub se basa en lo siguiente:

  • Un archivo de configuración de agrupación en la raíz del repositorio, que se declara explícitamente a través de la configuración del archivo YAML de Acciones de GitHub working-directory: . (Esta configuración se puede omitir si el archivo de configuración de agrupación ya está en la raíz del repositorio). Este archivo de configuración de agrupación define un flujo de trabajo de Azure Databricks denominado my-job y un destino denominado qa. Consulta Configuración de agrupaciones de recursos de Databricks.
  • Un secreto de GitHub denominado SP_TOKEN, que representa el token de acceso de Azure Databricks para una entidad de servicio de Azure Databricks asociada al área de trabajo de Azure Databricks en la que se está implementando y ejecutando este paquete. Consulte Secretos cifrados.
# This workflow validates, deploys, and runs the specified bundle
# within a pre-production target named "qa".
name: "QA deployment"

# Ensure that only a single job or workflow using the same concurrency group
# runs at a time.
concurrency: 1

# Trigger this workflow whenever a pull request is opened against the repo's
# main branch or an existing pull request's head branch is updated.
on:
  pull_request:
    types:
      - opened
      - synchronize
    branches:
      - main

jobs:
  # Used by the "pipeline_update" job to deploy the bundle.
  # Bundle validation is automatically performed as part of this deployment.
  # If validation fails, this workflow fails.
  deploy:
    name: "Deploy bundle"
    runs-on: ubuntu-latest

    steps:
      # Check out this repo, so that this workflow can access it.
      - uses: actions/checkout@v3

      # Download the Databricks CLI.
      # See https://github.com/databricks/setup-cli
      - uses: databricks/setup-cli@main

      # Deploy the bundle to the "qa" target as defined
      # in the bundle's settings file.
      - run: databricks bundle deploy
        working-directory: .
        env:
          DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
          DATABRICKS_BUNDLE_ENV: qa

  # Validate, deploy, and then run the bundle.
  pipeline_update:
    name: "Run pipeline update"
    runs-on: ubuntu-latest

    # Run the "deploy" job first.
    needs:
      - deploy

    steps:
      # Check out this repo, so that this workflow can access it.
      - uses: actions/checkout@v3

      # Use the downloaded Databricks CLI.
      - uses: databricks/setup-cli@main

      # Run the Databricks workflow named "my-job" as defined in the
      # bundle that was just deployed.
      - run: databricks bundle run my-job --refresh-all
        working-directory: .
        env:
          DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
          DATABRICKS_BUNDLE_ENV: qa

El siguiente archivo YAML de Acciones de GitHub puede existir en el mismo repositorio que el archivo anterior. Este archivo valida, implementa y ejecuta la agrupación especificada dentro de un destino de producción denominado "prod", tal y como se define dentro de un archivo de configuración de agrupación. Este ejemplo de archivo YAML de Acciones de GitHub se basa en lo siguiente:

  • Un archivo de configuración de agrupación en la raíz del repositorio, que se declara explícitamente a través de la configuración del archivo YAML de Acciones de GitHub working-directory: . (Esta configuración se puede omitir si el archivo de configuración de agrupación ya está en la raíz del repositorio). Este archivo de configuración de agrupación define un flujo de trabajo de Azure Databricks denominado my-job y un destino denominado prod. Consulta Configuración de agrupaciones de recursos de Databricks.
  • Un secreto de GitHub denominado SP_TOKEN, que representa el token de acceso de Azure Databricks para una entidad de servicio de Azure Databricks asociada al área de trabajo de Azure Databricks en la que se está implementando y ejecutando este paquete. Consulte Secretos cifrados.
# This workflow validates, deploys, and runs the specified bundle
# within a production target named "prod".
name: "Production deployment"

# Ensure that only a single job or workflow using the same concurrency group
# runs at a time.
concurrency: 1

# Trigger this workflow whenever a pull request is pushed to the repo's
# main branch.
on:
  push:
    branches:
      - main

jobs:
  deploy:
    name: "Deploy bundle"
    runs-on: ubuntu-latest

    steps:
      # Check out this repo, so that this workflow can access it.
      - uses: actions/checkout@v3

      # Download the Databricks CLI.
      # See https://github.com/databricks/setup-cli
      - uses: databricks/setup-cli@main

      # Deploy the bundle to the "prod" target as defined
      # in the bundle's settings file.
      - run: databricks bundle deploy
        working-directory: .
        env:
          DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
          DATABRICKS_BUNDLE_ENV: prod

  # Validate, deploy, and then run the bundle.
  pipeline_update:
    name: "Run pipeline update"
    runs-on: ubuntu-latest

    # Run the "deploy" job first.
    needs:
      - deploy

    steps:
      # Check out this repo, so that this workflow can access it.
      - uses: actions/checkout@v3

      # Use the downloaded Databricks CLI.
      - uses: databricks/setup-cli@main

      # Run the Databricks workflow named "my-job" as defined in the
      # bundle that was just deployed.
      - run: databricks bundle run my-job --refresh-all
        working-directory: .
        env:
          DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
          DATABRICKS_BUNDLE_ENV: prod

Consulte también