Exécuter un workflow CI/CD avec un pack de ressources Databricks et GitHub Actions
Cet article explique comment exécuter un workflow CI/CD (intégration continue/déploiement continu) dans GitHub avec GitHub Actions et un pack de ressources Databricks. Consultez Que sont les packs de ressources Databricks ?
Vous pouvez utiliser GitHub Actions avec des commandes bundle
de l’interface CLI Databricks pour automatiser, personnaliser et exécuter vos workflows CI/CD à partir de vos référentiels GitHub.
Vous pouvez ajouter des fichiers YAML GitHub Actions tels que les suivants au référentiel.github/workflows
de votre dépôt. L’exemple suivant de fichier YAML GitHub Actions valide, déploie et exécute le travail spécifié dans le pack au sein d’une cible de préproduction nommée « qa » telle que définie dans un fichier de configuration de pack. Cet exemple de fichier YAML GitHub Actions repose sur les éléments suivants :
- Un fichier de configuration de pack à la racine du référentiel, qui est explicitement déclaré par le biais du
working-directory: .
du fichier YAML GitHub Actions (Ce paramètre peut être omis si le fichier de configuration de pack se trouve déjà à la racine du référentiel). Ce fichier de configuration de pack définit un workflow Azure Databricks nommémy-job
et une cible nomméeqa
. Consultez Configuration du pack de ressources Databricks. - Un secret GitHub nommé
SP_TOKEN
, représentant le jeton d’accès Azure Databricks pour un principal de service Azure Databricks associé à l’espace de travail Azure Databricks sur lequel ce pack est déployé et exécuté. Consultez Secrets chiffrés.
# 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
Le fichier YAML GitHub Actions suivant peut exister dans le même référentiel que le fichier précédent. Ce fichier valide, déploie et exécute le pack spécifié dans une cible de production nommée « prod » comme défini dans un fichier de configuration de pack. Cet exemple de fichier YAML GitHub Actions repose sur les éléments suivants :
- Un fichier de configuration de pack à la racine du référentiel, qui est explicitement déclaré par le biais du
working-directory: .
du fichier YAML GitHub Actions (Ce paramètre peut être omis si le fichier de configuration de pack se trouve déjà à la racine du référentiel). Ce fichier de configuration de pack définit un workflow Azure Databricks nommémy-job
et une cible nomméeprod
. Consultez Configuration du pack de ressources Databricks. - Un secret GitHub nommé
SP_TOKEN
, représentant le jeton d’accès Azure Databricks pour un principal de service Azure Databricks associé à l’espace de travail Azure Databricks sur lequel ce pack est déployé et exécuté. Consultez Secrets chiffrés.
# 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