execução de um fluxo de trabalho CI/CD com um pacote Databricks ativo e GitHub Actions

Visualização

Esse recurso está em visualização pública.

Este artigo descreve como executar um fluxo de trabalho de CI/CD (integração contínua/implantação contínua) no GitHub com GitHub Actions e um Databricks ativo Bundle. Consulte O que são pacotes Databricks ativos?

Você pode usar GitHub Actions junto com a CLI do Databricks versão 0.205 ou acima e seu grupo de comandos bundle para automatizar, personalizar e executar seu fluxo de trabalho de CI/CD a partir de seus repositórios GitHub.

Você pode adicionar arquivos YAML do GitHub Actions, como os seguintes, ao diretório .github/workflows do seu repo . O exemplo de arquivo YAML do GitHub Actions valida, implanta e executa o Job 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 do GitHub Actions depende do seguinte:

  • Um arquivo de configuração do pacote na raiz do repositório, que é declarado explicitamente por meio da configuração working-directory: . do arquivo YAML do GitHub Actions (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 do pacote define um fluxo de trabalho do Databricks denominado my-job e um destino denominado qa. Consulte Configurações do Databricks ativo Bundle.

  • Um segredo do GitHub chamado SP_TOKEN, representando o access token do Databricks para uma entidade de serviço do Databricks associada ao workspace do 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 do GitHub Actions pode existir no mesmo repo que o arquivo anterior. Este arquivo valida, implanta e executa o pacote configurável especificado em um destino de produção denominado “prod”, conforme definido em um arquivo de configuração do pacote configurável. Este exemplo de arquivo YAML do GitHub Actions depende do seguinte:

  • Um arquivo de configuração do pacote na raiz do repositório, que é declarado explicitamente por meio da configuração working-directory: . do arquivo YAML do GitHub Actions (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 do pacote define um fluxo de trabalho do Databricks denominado my-job e um destino denominado prod. Consulte Configurações do Databricks ativo Bundle.

  • Um segredo do GitHub chamado SP_TOKEN, representando o access token do Databricks para uma entidade de serviço do Databricks associada ao workspace do 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