Execute um fluxo de trabalho de CI/CD com um Databricks Asset Bundle e ações do GitHub

Este artigo descreve como executar um fluxo de trabalho de CI/CD (integração contínua/implantação contínua) no GitHub com ações do GitHub e um pacote de ativos Databricks. Consulte O que são Databricks Asset Bundles?

Você pode usar as Ações do GitHub junto com os comandos da CLI bundle do Databricks para automatizar, personalizar e executar seus fluxos de trabalho de CI/CD de dentro dos repositórios do GitHub.

Você pode adicionar arquivos YAML do GitHub Actions como os seguintes ao diretório do .github/workflows seu repo. O exemplo a seguir do arquivo YAML do GitHub Actions valida, implanta e executa o trabalho especificado no pacote dentro de um destino de pré-produção chamado "qa", conforme definido em um arquivo de configuração do pacote. Este exemplo de arquivo YAML de ações do GitHub depende do seguinte:

  • Um arquivo de configuração de pacote na raiz do repositório, que é explicitamente declarado por meio da configuração working-directory: . do arquivo YAML de Ações do GitHub (essa configuração pode ser omitida se o arquivo de configuração do pacote já estiver na raiz do repositório.) Este arquivo de configuração de pacote define um fluxo de trabalho do Azure Databricks nomeado my-job e um destino chamado qa. Consulte Configurações do Databricks Asset Bundle.
  • Um segredo do GitHub chamado SP_TOKEN, que representa o token de acesso do Azure Databricks para uma entidade de serviço do Azure Databricks associada ao espaço de trabalho do Azure Databricks no qual esse pacote está sendo implantado e executado. Consulte Segredos criptografados.
# 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

O seguinte arquivo YAML de ações do GitHub pode existir no mesmo repositório que o arquivo anterior. Esse arquivo valida, implanta e executa o pacote especificado em um destino de produção chamado "prod", conforme definido em um arquivo de configuração de pacote. Este exemplo de arquivo YAML de ações do GitHub depende do seguinte:

  • Um arquivo de configuração de pacote na raiz do repositório, que é explicitamente declarado por meio da configuração working-directory: . do arquivo YAML de Ações do GitHub (essa configuração pode ser omitida se o arquivo de configuração do pacote já estiver na raiz do repositório.). Este arquivo de configuração de pacote define um fluxo de trabalho do Azure Databricks nomeado my-job e um destino chamado prod. Consulte Configurações do Databricks Asset Bundle.
  • Um segredo do GitHub chamado SP_TOKEN, que representa o token de acesso do Azure Databricks para uma entidade de serviço do Azure Databricks associada ao espaço de trabalho do Azure Databricks no qual esse pacote está sendo implantado e executado. Consulte Segredos criptografados.
# 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 também