Executar um fluxo de trabalho de CI/CD com um Pacote de Ativos do Databricks e o GitHub Actions
Este artigo descreve como executar um fluxo de trabalho de CI/CD (integração contínua e entrega contínua) no GitHub com o GitHub Actions e um Pacote de Ativos do Databricks. Confira O que são Pacotes de Ativos do Databricks?
Você pode usar o GitHub Actions junto com os comandos bundle
da CLI do Databricks para automatizar, personalizar e executar seus fluxos de trabalho de CI/CD de dentro de seus repositórios do GitHub.
Você pode adicionar arquivos YAML do GitHub Actions, como os seguintes, ao diretório .github/workflows
do repositório. 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 de pacote. Este exemplo de arquivo YAML de GitHub Actions depende do seguinte:
- Um arquivo de configuração de 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). Esse arquivo de configuração de pacote define um fluxo de trabalho do Azure Databricks nomeadomy-job
e um destino chamadoqa
. Confira Configuração do Pacote de Ativos do Databricks. - Um segredo do GitHub chamado
SP_TOKEN
, representando 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 arquivo YAML do GitHub Actions a seguir 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 GitHub Actions depende do seguinte:
- Um arquivo de configuração de 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). Esse arquivo de configuração de pacote define um fluxo de trabalho do Azure Databricks denominadomy-job
e um destino denominadoprod
. Confira Configuração do Pacote de Ativos do Databricks. - Um segredo do GitHub chamado
SP_TOKEN
, representando 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