Run a CI/CD workflow with a Databricks Asset Bundle and GitHub Actions (2024)
Documentation
Develop on Databricks
Developer tools and guidance
What are Databricks Asset Bundles?
Run a CI/CD workflow with a Databricks Asset Bundle and GitHub Actions
This article describes how to run a CI/CD (continuous integration/continuous deployment) workflow in GitHub with GitHub Actions and a Databricks Asset Bundle. See What are Databricks Asset Bundles?
You can use GitHub Actions along with Databricks CLI bundle commands to automate, customize, and run your CI/CD workflows from within your GitHub repositories.
You can add GitHub Actions YAML files such as the following to your repo’s .github/workflows directory. The following example GitHub Actions YAML file validates, deploys, and runs the specified job in the bundle within a pre-production target named “qa” as defined within a bundle configuration file. This example GitHub Actions YAML file relies on the following:
A bundle configuration file at the root of the repository, which is explicitly declared through the GitHub Actions YAML file’s setting working-directory:. (This setting can be omitted if the bundle configuration file is already at the root of the repository.) This bundle configuration file defines a Databricks workflow named my-job and a target named qa. See Databricks Asset Bundle configurations.
A GitHub secret named SP_TOKEN, representing the Databricks access token for a Databricks service principal that is associated with the Databricks workspace to which this bundle is being deployed and run. See Encrypted secrets.
# This workflow validates, deploys, and runs the specified bundle# within a pre-production target named "qa".name:"QAdeployment"# 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-synchronizebranches:-mainjobs:# 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:"Deploybundle"runs-on:ubuntu-lateststeps:# 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 deployworking-directory:.env:DATABRICKS_TOKEN:${{ secrets.SP_TOKEN }}DATABRICKS_BUNDLE_ENV:qa# Validate, deploy, and then run the bundle.pipeline_update:name:"Runpipelineupdate"runs-on:ubuntu-latest# Run the "deploy" job first.needs:-deploysteps:# 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-allworking-directory:.env:DATABRICKS_TOKEN:${{ secrets.SP_TOKEN }}DATABRICKS_BUNDLE_ENV:qa
The following GitHub Actions YAML file can exist in the same repo as the preceding file. This file validates, deploys, and runs the specified bundle within a production target named “prod” as defined within a bundle configuration file. This example GitHub Actions YAML file relies on the following:
A bundle configuration file at the root of the repository, which is explicitly declared through the GitHub Actions YAML file’s setting working-directory:. (This setting can be omitted if the bundle configuration file is already at the root of the repository.). This bundle configuration file defines a Databricks workflow named my-job and a target named prod. See Databricks Asset Bundle configurations.
A GitHub secret named SP_TOKEN, representing the Databricks access token for a Databricks service principal that is associated with the Databricks workspace to which this bundle is being deployed and run. See Encrypted secrets.
# This workflow validates, deploys, and runs the specified bundle# within a production target named "prod".name:"Productiondeployment"# 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:-mainjobs:deploy:name:"Deploybundle"runs-on:ubuntu-lateststeps:# 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 deployworking-directory:.env:DATABRICKS_TOKEN:${{ secrets.SP_TOKEN }}DATABRICKS_BUNDLE_ENV:prod# Validate, deploy, and then run the bundle.pipeline_update:name:"Runpipelineupdate"runs-on:ubuntu-latest# Run the "deploy" job first.needs:-deploysteps:# 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-allworking-directory:.env:DATABRICKS_TOKEN:${{ secrets.SP_TOKEN }}DATABRICKS_BUNDLE_ENV:prod
GitHub Actions helps you automate your software development workflows from within GitHub. You can deploy workflows in the same place where you store code and collaborate on pull requests and issues. In GitHub Actions, a workflow is an automated process that you set up in your GitHub repository.
GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.
Compared with other automation or CI/CD tools, GitHub Actions offers native capabilities right in your GitHub flow. It also makes it easy to leverage any of the 10,000+ pre-written and tested automations and CI/CD actions in the GitHub Marketplace as well as the ability to write your own with easy-to-use YAML files.
Jenkins deployments generally involve self-hosting, where the users oversee servers in their data centers.On the other hand, GitHub Actions uses a hybrid cloud strategy. It hosts its own job runners and also lets users host their own job runners. Find out more about runners who are on their own.
Types of actions. You can build Docker container, JavaScript, and composite actions. Actions require a metadata file to define the inputs, outputs and main entrypoint for your action. The metadata filename must be either action.
This example uses the push event, so a workflow run is triggered every time someone pushes a change to the repository or merges a pull request. This is triggered by a push to every branch; for examples of syntax that runs only on pushes to specific branches, paths, or tags, see "Workflow syntax for GitHub Actions."
Gitlab CI/CD. GitLab CI/CD is a software development platform that uses Continuous methodologies, such as Continuous Integration, Delivery, and Deployment. ...
Azure DevOps. Azure DevOps is a cloud service that automatically builds and tests your code. ...
Workflows: automated processes that run on your repository; workflows can have many GitHub Actions. GitHub Actions: individual tasks; they can be written using Docker, JavaScript and now also shell scrips with the new Composite Run Steps; you can write your own actions or use an action someone else created.
GitHub Actions simplifies the process with Node and Docker integrations and allows you to specify which version you want to use and then connect your code to a target environment and application platform.
GitHub Actions must be enabled for a repository in the organization's settings in order for required workflows to run. Once enabled at an organization-level, required workflows will run even when GitHub Actions is disabled in the repository's settings.
Address: 359 Kelvin Stream, Lake Eldonview, MT 33517-1242
Phone: +577037762465
Job: Product Hospitality Supervisor
Hobby: Gardening, Web surfing, Video gaming, Amateur radio, Flag Football, Reading, Table tennis
Introduction: My name is Manual Maggio, I am a thankful, tender, adventurous, delightful, fantastic, proud, graceful person who loves writing and wants to share my knowledge and understanding with you.
We notice you're using an ad blocker
Without advertising income, we can't keep making this site awesome for you.