<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article How to use GitFlow and DABs for seamless Databricks Deployments in Technical Blog</title>
    <link>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/ba-p/114023</link>
    <description>&lt;H1&gt;&lt;SPAN&gt;Introduction&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;Coordinating code changes across environments — especially in data engineering and data science teams can get messy without a structured process. Issues like inconsistent deployments, unstable releases, or last-minute hotfixes often arise when development practices are loosely defined or lack clear conventions. While some teams lean toward trunk-based development or simple branch-per-environment models, others benefit from more structure.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;GitFlow is one such branching strategy that introduces a clear framework for managing parallel development, releases, and hotfixes. It’s not the only way to manage version control, but it shines in scenarios where teams need a disciplined approach to separate active development from production-ready code.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;When combined with Databricks Asset Bundles (DABs) and GitHub Actions, GitFlow helps create a reliable, end-to-end workflow for deploying projects across DEV, QA, and PROD environments. In this post, we’ll explore how this integration works and when adopting GitFlow makes the most sense for Databricks-based teams.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;SPAN&gt;What is GitFlow&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;GitFlow is a Git branching model designed to manage complex software development projects. It includes two stable branches and several supporting branches:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Stable Branches:&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT color="#993300"&gt;&lt;STRONG&gt;main:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN&gt; The stable production branch where all releases are tagged.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT color="#993300"&gt;&lt;STRONG&gt;develop:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN&gt; The integration branch where features and fixes are merged before being promoted to the main branch.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Supporting Branches:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;FONT color="#993300"&gt;&lt;STRONG&gt;feature:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN&gt; Used for developing new features. Branched off from develop and merged back into develop once complete.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;FONT color="#993300"&gt;&lt;STRONG&gt;release:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN&gt; Prepare for a new production release. Branched from develop and merged into both main and develop.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;FONT color="#993300"&gt;&lt;STRONG&gt;hotfix:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN&gt; Immediate fixes for production issues. Branched from main and merged back into both main and develop.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;The GitFlow workflow excels at managing releases by isolating work into different branch types. This separation improves control over which changes move to specific environments on a defined schedule, while still allowing for accelerated deployments when necessary.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_0-1746637133406.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16644i0C73DB2E2F43D139/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_0-1746637133406.png" alt="ajalisatgi_0-1746637133406.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;SPAN&gt;Why Choose GitFlow&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;GitFlow stands out from other Git workflows (like trunk-based development, GitHub Flow, or GitLab Flow) due to its structured, role-based branching strategy, which brings several distinct advantages:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Structured Release Management:&lt;/STRONG&gt;&lt;SPAN&gt; GitFlow enforces a clear separation between long-lived branches (&lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;main&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; for production, &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;develop&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; for ongoing integration) and purpose-specific short-lived branches (&lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;feature&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;release&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;, and &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;hotfix&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;). This structure creates a disciplined, predictable development lifecycle—particularly valuable for teams managing versioned releases.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Parallel Development:&lt;/STRONG&gt;&lt;SPAN&gt; Its branching model enables multiple developers or teams to work on features, hotfixes, or release preparations simultaneously without stepping on each other’s toes. This is particularly helpful in environments where concurrent streams of work must be isolated until ready.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Stability and Predictability:&lt;/STRONG&gt;&lt;SPAN&gt; By reserving the &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;main&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; branch strictly for production-ready code and staging changes through &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;develop&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;release&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; branches, GitFlow ensures production stability. In contrast to trunk-based development—where everything merges to a single mainline—GitFlow’s staging layers offer greater confidence in planned releases and regression testing.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Support for Complex Projects:&lt;/STRONG&gt;&lt;SPAN&gt; GitFlow is ideal for larger teams or products with multiple environments (dev, qa, staging, prod) and a need for structured testing, QA cycles, or even concurrent support of multiple production versions.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Hotfix Agility:&lt;/STRONG&gt;&lt;SPAN&gt; While most Git strategies can handle hotfixes, GitFlow provides a dedicated &lt;FONT color="#993300"&gt;hotfix&lt;/FONT&gt; branch type designed specifically for this use case. This allows urgent fixes to be made directly off the &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;main&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; branch, then cleanly merged back into both &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;main&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;develop&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;, minimizing disruption and ensuring continuity across the codebase.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;SPAN&gt;Why DABs Are Useful&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;Databricks Asset Bundles (DABs) provide a structured and streamlined way to package, share, and deploy Databricks assets—such as jobs, notebooks, and dependencies. Their key benefits include:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Efficient Code Versioning and Collaboration&lt;/STRONG&gt;&lt;SPAN&gt;: DABs support systematic version control and seamless collaboration when integrated with any Git-based source control platform (e.g., GitHub, GitLab, or Azure Repos).&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Declarative and Simple Deployment&lt;/STRONG&gt;&lt;SPAN&gt;: Using a YAML-based format, DABs make it easy to define and deploy multiple resources with minimal configuration.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Substitutions and Variables in DABs:&lt;/STRONG&gt;&lt;SPAN&gt; DABs support &lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dev-tools/bundles/variables" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;substitutions and custom variables&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;, which make bundle configuration files modular, reusable, and environment-aware. Settings such as cluster IDs, job parameters, and environment-specific values can be dynamically injected at deploy time, reducing duplication and manual tweaking.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Developer-Driven, DevOps-Governed Workflows: &lt;/STRONG&gt;&lt;SPAN&gt;DABs shift asset packaging and configuration closer to the developer while allowing DevOps engineers to retain control over staging and production deployments. This balance means developers fully define what needs to be deployed.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG style="color: #1b3139; font-family: inherit;"&gt;Automated Software Development Lifecycle (SDLC)&lt;/STRONG&gt;&lt;SPAN&gt;: DABs facilitate the automation of deployment pipelines and structured SDLC practices. When combined with CI/CD tools, they enable governance workflows such as code reviews, testing gates, and manual approvals before production releases.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Scalability and Maintainability&lt;/STRONG&gt;&lt;SPAN&gt;: By reducing code duplication and enabling standardized, reusable configurations, DABs help manage complex data pipelines more efficiently and at scale.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Governance and Risk Reduction&lt;/STRONG&gt;&lt;SPAN&gt;: While DABs do not enforce approvals natively, they integrate with CI/CD pipelines that can enforce approval-based controls—ensuring only authorized and tested changes are promoted to production.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;These capabilities make DABs especially valuable for organizations managing complex data engineering workflows, implementing CI/CD, and aiming for scalable, maintainable, and governed deployments.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;SPAN&gt;How GitFlow and DABs Complement Each Other&lt;/SPAN&gt;&lt;/H1&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;I&lt;/STRONG&gt;&lt;STRONG&gt;ntegration with CI/CD&lt;/STRONG&gt;&lt;SPAN&gt;: DABs can be seamlessly integrated into a GitFlow-based repository. GitFlow manages source code changes through structured branching, while DABs handle deployment automation and environment-specific configurations.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Governance and Control&lt;/STRONG&gt;&lt;SPAN&gt;: GitFlow’s branching model—separating features, releases, and hotfixes—aligns well with DABs' deployment lifecycle. Together, they support gated promotions to staging or production via CI/CD approvals and tests.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Scalability and Collaboration&lt;/STRONG&gt;&lt;SPAN&gt;: GitFlow supports parallel development across teams and features. DABs complement this by enabling standardized, scalable deployments across environments, enhancing both collaboration and release confidence.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;SPAN&gt;Integrating GitFlow and DABs&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;DABs can be versioned and managed in a Git repository, aligning with GitFlow practices. They allow for seamless promotion of assets from development to production, mirroring the GitFlow branching strategy. This integration ensures that changes are systematically tracked and deployed across environments, maintaining consistency and reducing errors.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_1-1746637207526.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16645i85D375EB664AD775/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_1-1746637207526.png" alt="ajalisatgi_1-1746637207526.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;SPAN&gt;Pre-requisites and Initial Repository Setup&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;The following steps need to be followed for setting up your new or existing repository.&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Clone the &lt;/SPAN&gt;&lt;A href="https://github.com/databricks-solutions/databricks-blogposts" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;databricks-blogposts&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt; repository.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Copy all the contents under the ‘2025-04-how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments’ folder to the root of your repository that you wish to manage using Gitflow.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Follow the steps in the README under ‘2025-04-how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments’ to set up your repository for different environments as shown in Figure 2.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;SPAN&gt;Deployment Process Using GitFlow and DABs&lt;/SPAN&gt;&lt;/H1&gt;
&lt;H2&gt;&lt;SPAN&gt;Standard Release Process&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_2-1746637257083.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16646iF92DEB334E8A4723/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_2-1746637257083.png" alt="ajalisatgi_2-1746637257083.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 1: Collaboration and Development&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;It all begins with the developers. Each developer creates individual &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;feature&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; branches derived from the &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;develop&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt; branch. They independently work on features, bug fixes, or improvements. Once their work is ready, developers submit a Pull Request (PR) for peer review, fostering collaboration and ensuring high-quality code through collective insights.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 2: Integrating and Releasing&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;SPAN&gt;When the &lt;FONT color="#993300"&gt;develop&lt;/FONT&gt; branch has sufficient updates and features ready for integration testing, a DevOps Engineer initiates the release process by manually triggering the ‘Draft new release’ GitHub Actions Workflow and specifying whether the release type is "MAJOR" or "MINOR."&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;SPAN&gt;Typically:&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Major:&lt;/STRONG&gt; Indicates breaking changes or significant new features.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Minor:&lt;/STRONG&gt; Indicates new features or enhancements that are backward-compatible.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_1-1746571229385.gif" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16539i4F0EC801B90588B5/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_1-1746571229385.gif" alt="ajalisatgi_1-1746571229385.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;SPAN&gt;The ‘Draft new release’ GitHub Actions Workflow completes the following tasks:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;STRONG&gt;Deploy to QA:&lt;/STRONG&gt;&lt;SPAN&gt; Databricks Assets Bundles (DAB) are deployed directly to a QA Databricks workspace for thorough testing.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;STRONG&gt;Version Control:&lt;/STRONG&gt;&lt;SPAN&gt; The GitHub Actions workflow fetches the current release version and increments it based on the release type.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;STRONG&gt;Release Branch Creation:&lt;/STRONG&gt;&lt;SPAN&gt; A new version-specific release branch is created.&lt;/SPAN&gt;&lt;/P&gt;
&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_2-1746571319345.png" style="width: 176px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16540i8A07C7732C1F2EAC/image-dimensions/176x51?v=v2" width="176" height="51" role="button" title="ajalisatgi_2-1746571319345.png" alt="ajalisatgi_2-1746571319345.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Ready for Production:&lt;/STRONG&gt;&lt;SPAN&gt; A PR from this release branch to the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch is automatically generated, ready for review and approval.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_4-1746571442202.png" style="width: 596px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16542iB6E52D668E8F95AF/image-dimensions/596x740?v=v2" width="596" height="740" role="button" title="ajalisatgi_4-1746571442202.png" alt="ajalisatgi_4-1746571442202.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 3: Automated Production Deployment&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;SPAN&gt;After peer review and approval, the DevOps Engineer merges the &lt;FONT color="#993300"&gt;release&lt;/FONT&gt; branch into the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch, which triggers the ‘Publish new Release’ GitHub Actions workflow automatically.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_5-1746571556636.gif" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16543i1367A16DDDD86C17/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_5-1746571556636.gif" alt="ajalisatgi_5-1746571556636.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;SPAN&gt;The ‘Draft new release’ GitHub Actions Workflow completes the following tasks:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;STRONG&gt;Deploy to Production: &lt;/STRONG&gt;&lt;SPAN&gt;Validated DAB assets are deployed to the Production Databricks workspace.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;STRONG&gt;Publish and Tag: &lt;/STRONG&gt;&lt;SPAN&gt;A tagged release is created, marking a clean and stable project milestone.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_7-1746572100672.png" style="width: 168px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16545i31F1465B1D2140D7/image-dimensions/168x88?v=v2" width="168" height="88" role="button" title="ajalisatgi_7-1746572100672.png" alt="ajalisatgi_7-1746572100672.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;
&lt;P&gt;&lt;STRONG style="font-family: inherit;"&gt;Maintain Sync: &lt;/STRONG&gt;&lt;SPAN&gt;A PR is generated to merge the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch back into the &lt;FONT color="#993300"&gt;develop&lt;/FONT&gt; branch only if the &lt;FONT color="#993300"&gt;release&lt;/FONT&gt; branch has changes that are not present in &lt;/SPAN&gt;&lt;SPAN&gt;develop&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;H2&gt;&lt;SPAN&gt;Hotfix Release Process&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_3-1746637316882.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16647iE7AE74829726AC92/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_3-1746637316882.png" alt="ajalisatgi_3-1746637316882.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;In the fast-paced world of software engineering, efficient handling of critical issues is paramount. The &lt;/SPAN&gt;&lt;FONT color="#000000"&gt;hotfix&lt;/FONT&gt;&lt;SPAN&gt; release process empowers developers and DevOps engineers alike to swiftly address urgent fixes, minimizing disruption and downtime. A &lt;/SPAN&gt;&lt;FONT color="#000000"&gt;hotfix&lt;/FONT&gt;&lt;SPAN&gt; release should be used when an urgent fix is required for a critical bug or security flaw that exists in the production (live) environment. This is distinct from the standard development process, which typically handles new features, improvements, and non-urgent bug fixes through the &lt;FONT color="#993300"&gt;develop&lt;/FONT&gt; branch and regular release cycles. Here's a structured, step-by-step breakdown of the process:&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 1: Developer initiates hotfix&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The developer identifies a critical issue and creates a &lt;FONT color="#993300"&gt;hotfix&lt;/FONT&gt; branch from the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;They implement the required fix and open a Pull Request (PR) against the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch for approvals.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_2-1746573217168.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16548iF552850F35A4622A/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_2-1746573217168.png" alt="ajalisatgi_2-1746573217168.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 2: Manual trigger by DevOps engineer&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;A DevOps engineer manually triggers the ‘Draft new hotfix’ GitHub Actions workflow by referencing the original PR number created by the developer.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_3-1746573278818.gif" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16549i827FDBE2E945F64F/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_3-1746573278818.gif" alt="ajalisatgi_3-1746573278818.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;A GitHub Actions workflow is triggered for ‘Draft new hotfix’:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_4-1746573313796.gif" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16550i21EA616553E1BFA7/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_4-1746573313796.gif" alt="ajalisatgi_4-1746573313796.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 3: GitHub Actions workflow – Drafting new hotfix&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;GitHub Actions retrieves the current release version.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Automatically increments the patch version.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Creates a new versioned &lt;FONT color="#993300"&gt;hotfix&lt;/FONT&gt; branch based on the developer’s original fix.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Generates a Pull Request to merge this versioned &lt;FONT color="#993300"&gt;hotfix&lt;/FONT&gt; branch into the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_5-1746573352365.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16551iAB82A796D6D447B9/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_5-1746573352365.png" alt="ajalisatgi_5-1746573352365.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Closes the original developer-created hotfix PR.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_6-1746573400666.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16552i1AE45F9DC22BD59D/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_6-1746573400666.png" alt="ajalisatgi_6-1746573400666.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 4: DevOps Approval and Merge&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The DevOps engineer obtains approval from reviewers and merges the new versioned hotfix PR into the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN&gt;Step 5: Automated GitHub Actions Workflow – Deployment and Release&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;&lt;SPAN&gt;The merge into the &lt;FONT color="#993300"&gt;main&lt;/FONT&gt; branch triggers the ‘Publish new release’ GitHub Actions workflow.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_7-1746573462048.gif" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16553i6CE7ED5719F96CFC/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_7-1746573462048.gif" alt="ajalisatgi_7-1746573462048.gif" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The hotfix is automatically deployed to the production Databricks workspace.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;A tagged release is created for easy tracking.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_8-1746573533509.png" style="width: 200px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16554iC1F6810EC8CC7674/image-size/small?v=v2&amp;amp;px=200" role="button" title="ajalisatgi_8-1746573533509.png" alt="ajalisatgi_8-1746573533509.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;A Pull Request is automatically generated to merge changes back into the &lt;FONT color="#993300"&gt;develop&lt;/FONT&gt; branch&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ajalisatgi_9-1746573592610.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16555iB771A6D682FCE6A5/image-size/large?v=v2&amp;amp;px=999" role="button" title="ajalisatgi_9-1746573592610.png" alt="ajalisatgi_9-1746573592610.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;SPAN&gt;Conclusion&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;Integrating GitFlow with Databricks Asset Bundles (DABs) and GitHub Actions offers a structured and repeatable approach to managing data workflows, especially for teams transitioning from ad-hoc development practices or inconsistent deployment processes. While GitFlow is not the only Git branching strategy available, it introduces a level of discipline that can be particularly useful in environments where stability, release isolation, and clear promotion paths are critical.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Compared to more freeform approaches such as manually managing branches without a defined release process,&amp;nbsp; GitFlow provides several key advantages:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Clear structure:&lt;/STRONG&gt;&lt;SPAN&gt; It defines how features, releases, and hotfixes should be handled, helping teams avoid accidental merges or last-minute cherry-picks.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Environment alignment:&lt;/STRONG&gt;&lt;SPAN&gt; With DABs, teams can consistently package and promote code across dev, QA, and prod, reducing the drift between environments.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Release control:&lt;/STRONG&gt;&lt;SPAN&gt; By using &lt;FONT color="#993300"&gt;release&lt;/FONT&gt; and &lt;FONT color="#993300"&gt;hotfix&lt;/FONT&gt; branches, teams can test and stabilize changes in isolation before merging to &lt;/SPAN&gt;&lt;FONT color="#993300"&gt;&lt;SPAN&gt;main&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Automation-friendly:&lt;/STRONG&gt;&lt;SPAN&gt; GitHub Actions makes it easy to automate tests, validations, and deployments tied to specific branch events.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;That said, GitFlow may introduce overhead in fast-moving teams or those practicing trunk-based development, where short-lived branches and rapid integration are prioritized. But if your team needs a clear separation between development and release efforts—or a reliable process for managing emergency fixes—GitFlow provides a strong foundation.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;For data teams working in Databricks, adopting GitFlow alongside DABs and CI/CD workflows can bring much-needed clarity, traceability, and confidence to your deployment process. This is especially true if you’re moving away from an informal or inconsistent setup.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 13 May 2025 12:51:18 GMT</pubDate>
    <dc:creator>abhay-jalisatgi</dc:creator>
    <dc:date>2025-05-13T12:51:18Z</dc:date>
    <item>
      <title>How to use GitFlow and DABs for seamless Databricks Deployments</title>
      <link>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/ba-p/114023</link>
      <description>&lt;P class="" data-start="42" data-end="443"&gt;&lt;span class="lia-unicode-emoji" title=":rocket:"&gt;🚀&lt;/span&gt; &lt;STRONG data-start="45" data-end="89"&gt;Tired of chaotic Databricks deployments?&lt;/STRONG&gt;&lt;BR data-start="89" data-end="92" /&gt;Discover how combining &lt;STRONG data-start="115" data-end="126"&gt;GitFlow&lt;/STRONG&gt;, &lt;STRONG data-start="128" data-end="163"&gt;Databricks Asset Bundles (DABs)&lt;/STRONG&gt;, and &lt;STRONG data-start="169" data-end="187"&gt;GitHub Actions&lt;/STRONG&gt; can bring structure, scalability, and sanity to your data workflows. Whether you're dealing with hotfixes, production releases, or parallel feature development, this guide shows how to tame complexity and deploy with confidence across &lt;SPAN&gt;DEV, QA, and PROD&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class="" data-start="445" data-end="559"&gt;&lt;STRONG data-start="445" data-end="557"&gt;&lt;span class="lia-unicode-emoji" title=":wrench:"&gt;🔧&lt;/span&gt; From version control to environment-specific automation—this is the CI/CD blueprint your data team needs.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="" data-start="561" data-end="646"&gt;&lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_right:"&gt;👉&lt;/span&gt; &lt;EM data-start="564" data-end="646"&gt;Read on to learn how to turn Git discipline into Databricks delivery excellence.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 13 May 2025 12:51:18 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/ba-p/114023</guid>
      <dc:creator>abhay-jalisatgi</dc:creator>
      <dc:date>2025-05-13T12:51:18Z</dc:date>
    </item>
    <item>
      <title>Re: How to use GitFlow and DABs for seamless Databricks Deployments</title>
      <link>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/128346#M726</link>
      <description>&lt;P&gt;Gartner already in 2020 recommended trunk-based development:&lt;BR /&gt;&lt;A href="https://www.gartner.com/en/documents/3984368#:~:text=Summary,and%20more%20time%20delivering%20functionality" target="_blank"&gt;https://www.gartner.com/en/documents/3984368#:~:text=Summary,and%20more%20time%20delivering%20functionality&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Atlassian encourages against Gitflow calling it a "legacy workflow" that "has fallen in popularity in favor of trunk-based workflows, which are now considered best practices":&lt;BR /&gt;&lt;A href="https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow" target="_blank"&gt;https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Why do Databricks still try to promote Gitflow?&lt;/P&gt;</description>
      <pubDate>Wed, 13 Aug 2025 13:44:27 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/128346#M726</guid>
      <dc:creator>TomDudziak</dc:creator>
      <dc:date>2025-08-13T13:44:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to use GitFlow and DABs for seamless Databricks Deployments</title>
      <link>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/128475#M729</link>
      <description>&lt;P&gt;Thanks for sharing the model and workflow for change management, I have a question that when two different team works on two project with their feature branches, only one project is ready for production deployment, in this case both team alreay merging their feature branches into develop branch periodically, so creating release branch from develop branch for production release will include other project as well right, this gives conflict, not?, so how should we handle it. I suggest to directly merge the release branch to main branch during prod release, your thought please.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Aug 2025 14:47:57 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/128475#M729</guid>
      <dc:creator>Abser786</dc:creator>
      <dc:date>2025-08-14T14:47:57Z</dc:date>
    </item>
    <item>
      <title>Re: How to use GitFlow and DABs for seamless Databricks Deployments</title>
      <link>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/131178#M751</link>
      <description>&lt;P&gt;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/155476"&gt;@TomDudziak&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="p-rich_text_section"&gt;While trunk-based development is indeed considered an industry best practice for many engineering teams—especially those prioritizing continuous integration and rapid deployment—GitFlow still has value in certain contexts.&lt;BR aria-hidden="true" /&gt;Databricks often works with enterprise customers in regulated industries (finance, healthcare, public sector) where:&lt;/DIV&gt;
&lt;UL class="p-rich_text_list p-rich_text_list__bullet p-rich_text_list--nested" data-stringify-type="unordered-list" data-list-tree="true" data-indent="0" data-border="0"&gt;
&lt;LI data-stringify-indent="0" data-stringify-border="0"&gt;&lt;STRONG data-stringify-type="bold"&gt;Long-lived release branches&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;provide a clear audit trail for compliance.&lt;/LI&gt;
&lt;LI data-stringify-indent="0" data-stringify-border="0"&gt;&lt;STRONG data-stringify-type="bold"&gt;Hotfix branches&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;allow for controlled production patches without impacting ongoing feature development.&lt;/LI&gt;
&lt;LI data-stringify-indent="0" data-stringify-border="0"&gt;&lt;STRONG data-stringify-type="bold"&gt;Multiple concurrent releases&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;need to be managed for different environments or clients.&lt;/LI&gt;
&lt;/UL&gt;
&lt;DIV class="p-rich_text_section"&gt;In these situations, GitFlow’s structured branching model can make release governance and risk mitigation easier, even if it trades off some of the speed and simplicity of trunk-based development.&lt;BR aria-hidden="true" /&gt;That said, Databricks doesn’t enforce GitFlow—it’s one of several patterns we support. For teams able to adopt trunk-based workflows, we actively encourage it, but we also recognize that some customer environments require the guardrails GitFlow provides.&lt;/DIV&gt;</description>
      <pubDate>Sun, 07 Sep 2025 19:47:04 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/131178#M751</guid>
      <dc:creator>abhay-jalisatgi</dc:creator>
      <dc:date>2025-09-07T19:47:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to use GitFlow and DABs for seamless Databricks Deployments</title>
      <link>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/131180#M752</link>
      <description>&lt;P&gt;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/79185"&gt;@Abser786&lt;/a&gt; &lt;BR /&gt;That’s a great question—you’re pointing at one of the classic trade-offs with GitFlow when multiple projects share the same &lt;CODE data-start="187" data-end="196"&gt;develop&lt;/CODE&gt; branch.&lt;/P&gt;
&lt;P data-start="208" data-end="434"&gt;You’re right that if both teams are merging into &lt;CODE data-start="257" data-end="266"&gt;develop&lt;/CODE&gt;, then cutting a release branch from &lt;CODE data-start="303" data-end="312"&gt;develop&lt;/CODE&gt; will naturally pick up &lt;EM data-start="336" data-end="341"&gt;all&lt;/EM&gt; merged changes—even those not production-ready. This can cause the conflict you mentioned.&lt;/P&gt;
&lt;P data-start="436" data-end="484"&gt;There are a few common ways teams handle this:&lt;/P&gt;
&lt;UL data-start="486" data-end="1284"&gt;
&lt;LI data-start="486" data-end="656"&gt;
&lt;P data-start="488" data-end="656"&gt;&lt;STRONG data-start="488" data-end="515"&gt;Feature toggles / flags&lt;/STRONG&gt;: Teams merge regularly into &lt;CODE data-start="544" data-end="553"&gt;develop&lt;/CODE&gt;, but production-incomplete features are hidden behind flags so they don’t affect the release branch.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="657" data-end="917"&gt;
&lt;P data-start="659" data-end="917"&gt;&lt;STRONG data-start="659" data-end="694"&gt;Project-scoped release branches&lt;/STRONG&gt;: Instead of treating &lt;CODE data-start="716" data-end="725"&gt;develop&lt;/CODE&gt; as a single integration branch for everyone, teams can maintain separate “integration” branches per project and only merge into the shared &lt;CODE data-start="865" data-end="874"&gt;develop&lt;/CODE&gt; once both projects are production-ready.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="918" data-end="1127"&gt;
&lt;P data-start="920" data-end="1127"&gt;&lt;STRONG data-start="920" data-end="984"&gt;Release branch directly from feature branch (exception case)&lt;/STRONG&gt;: For urgent or isolated production releases, you can branch directly from the feature branch (or a hotfix branch) instead of from &lt;CODE data-start="1115" data-end="1124"&gt;develop&lt;/CODE&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1128" data-end="1284"&gt;
&lt;P data-start="1130" data-end="1284"&gt;&lt;STRONG data-start="1130" data-end="1157"&gt;Trunk-based alternative&lt;/STRONG&gt;: Some teams sidestep this problem by using trunk-based development and releasing from &lt;CODE data-start="1244" data-end="1250"&gt;main&lt;/CODE&gt; with very short-lived branches.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="1286" data-end="1654"&gt;Regarding your suggestion to merge release branches directly into &lt;CODE data-start="1352" data-end="1358"&gt;main&lt;/CODE&gt;: that is a valid simplification if your team is comfortable treating &lt;CODE data-start="1428" data-end="1437"&gt;develop&lt;/CODE&gt; purely as a staging/integration branch and using &lt;CODE data-start="1487" data-end="1493"&gt;main&lt;/CODE&gt; as the only stable production branch. The trade-off is that you lose some of the isolation GitFlow’s release branch model provides for parallel stabilization.&lt;/P&gt;
&lt;P data-start="1656" data-end="1797"&gt;In practice, the right approach depends on your team’s release cadence and whether features can be safely toggled off if they’re not ready.&lt;/P&gt;</description>
      <pubDate>Sun, 07 Sep 2025 19:51:46 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/how-to-use-gitflow-and-dabs-for-seamless-databricks-deployments/bc-p/131180#M752</guid>
      <dc:creator>abhay-jalisatgi</dc:creator>
      <dc:date>2025-09-07T19:51:46Z</dc:date>
    </item>
  </channel>
</rss>

