Last updated: November 11, 2026
By ZapAI Team
Fabric deployment pipelines move reports, semantic models, lakehouses, notebooks and other items from a development workspace to test and then production, while Git integration keeps their definitions under version control. Our Microsoft Fabric consulting team sets up both for SMB and mid-market data teams. This guide covers which items each tool supports in November 2026, how rules, autobinding and variable libraries handle per-stage settings, where fabric-cicd fits, and what breaks in practice, with every product fact checked against Microsoft Learn on November 11, 2026.
Deployment pipelines in Microsoft Fabric copy item definitions, not data, across two to ten workspace stages such as dev, test and prod. Pair them with Git integration for version history, deployment rules or variable libraries for per-stage settings, and fabric-cicd for scripted releases.
A hypothetical example. A three-person BI team publishes straight from Power BI Desktop into the workspace sales uses. Someone renames a measure. Six reports break. Nobody knows what the model looked like yesterday.
That’s the gap this guide fills. If Fabric itself is new to you, start with what Microsoft Fabric is. Apps, flows and Copilot Studio agents follow different rules, covered in our sibling Power Platform ALM guide, so this post stays on the Fabric and Power BI side.
What Are Fabric Deployment Pipelines and Git Integration?
Two tools, two jobs. Git integration connects a workspace to a branch in Azure DevOps or GitHub so every change has history. Deployment pipelines copy content between workspaces assigned to stages like development, test and production.
Microsoft’s CI/CD workflow options page describes four release patterns. Per-stage Git branches. A shared release commit deployed by script. Deployment pipelines between workspaces. A per-customer pattern for software vendors. Teams can mix them.
One rule holds across all four. Data doesn’t travel. Only definitions do, which shapes everything from refresh schedules to empty lakehouses later in this guide.
New to OneLake and capacities? Our guide to how Fabric architecture fits together explains the pieces.
Which Items Does Fabric Git Integration Support in November 2026?
Most of them, now. Microsoft’s Git integration overview and its deployment pipelines list cover data engineering, Data Factory, warehouse, Real-Time Intelligence, database and Power BI items. Several carry preview labels.
| Workload | Supported items | Still labeled preview |
|---|---|---|
| Data Engineering | Lakehouse, notebook, environment, Spark job definition, GraphQL, user data functions | None listed |
| Data Factory | Pipeline, Dataflow Gen2, Copy job, mirrored database, dbt job, Mount ADF | Airflow, mirrored Snowflake, Operations Agent |
| Data Warehouse | Warehouse, mirrored Azure Databricks catalog | None on either list |
| Power BI | Report, semantic model, paginated report, org app, plus dashboards and Gen1 dataflows in pipelines | Reports, semantic models and paginated reports on both lists, and every Power BI item in deployment pipelines |
| Real-Time Intelligence | Eventhouse, KQL database, KQL queryset, eventstream, Activator, Real-Time Dashboard, maps | Digital twin builder, anomaly detection, event schema set |
| Database and CI/CD | SQL database, variable library | Cosmos database, deployment plan |
Read the Power BI row twice. Reports and semantic models, the items BI teams care about most, still carry preview labels on both Microsoft lists, even though teams have shipped them this way for a long time. Exclusions apply too. Push datasets, live connections to Analysis Services and reports built on My Workspace models aren’t covered by Git integration.
Unsupported items don’t block anything. They’re ignored, not deleted.
Licensing first. Git integration needs a Fabric capacity, or a Power BI Premium capacity for Power BI items, plus tenant switches an admin turns on. Limits sit on Microsoft’s Git integration process page.
- Azure DevOps, GitHub and GitHub Enterprise, cloud versions only.
- One branch per workspace. Update always pulls the whole branch.
- 1,000 items per workspace. Past that, sync fails.
- 25 MB per file. Commits cap at 50 MB on GitHub, and on Azure DevOps at 25 MB with a service principal or 125 MB with single sign-on.
- Sensitivity labels aren’t supported, and exporting labeled items might be disabled.
- No B2B. No sovereign clouds. No submodules.
- Duplicate names fail, even where Power BI allows them.
Mark one date. Starting February 28, 2027, users without read-write permission on workspace items can’t use Git integration, and the same rule applies to deployment pipelines for workspaces holding items with protected sensitivity labels.

How Should a Team Branch in Fabric?
Give each developer their own workspace on their own feature branch. A Fabric workspace is a shared runtime connected to a single branch, so two people editing the same workspace overwrite each other.
Fabric offers two ways to isolate work. Branch out creates a new workspace tied to a new branch built from the source workspace’s last commit, and any contributor can run it without waiting on a workspace admin. Client tools are the other route, with Power BI Desktop for reports and models and VS Code for notebooks. Our Fabric migration best practices cover Microsoft’s branching guidance.
What works for most teams we support. One shared dev workspace connected to the dev branch. Short-lived feature workspaces created with branch out. Pull requests reviewed in Azure DevOps or GitHub. And a rule that nobody edits the shared dev workspace directly, because direct edits there collide with incoming merges. Agree who deletes feature workspaces.
Handling conflicts
Conflicts happen when the same item changes in the workspace and in the branch. Commit is disabled until you pick a side.
Microsoft’s guide to Git conflicts in Fabric offers three routes. Choose a version per item in the UI. Revert to the last synced state. Or check out a new branch, merge in Git, and switch the workspace back. The UI choice is per item. One version wins.
Two traps. Reconnecting a workspace to clear a conflict overwrites everything in one direction, not just the conflicted items. And restoring an item from the recycle bin after Git recreated it leaves two items with different IDs, which can stop Git sync until you delete the copy Git made.
How Do Fabric Deployment Pipelines Work?
You create a pipeline with two to ten stages, assign a workspace to each, and deploy from one stage to the next. Fabric copies item definitions, overwrites paired items in the target, applies your rules, and leaves everything else alone, per Microsoft’s deployment pipelines overview.
Plan the stage list carefully. Stage count and names are permanent. Three is the default, and most SMB teams we work with stay there.
Pairing decides what gets overwritten
Pairing links an item in one stage to its twin in the next. It happens when you assign a workspace to a stage or deploy something new. Items added after you assign the workspace don’t pair on their own, and an unpaired item that shares a name with something in the next stage isn’t overwritten during deployment, which surprises people. You get a duplicate instead. And deploying a Power BI item for the first time fails outright if the target already holds one with the same name and type.
Licensing, permissions and capacities
Each stage’s workspace must sit on a Fabric capacity, and deploying to an empty stage creates the new workspace on a capacity you have permissions for, or leaves it empty without them. Premium Per User workspaces work too, though only PPU users can open them, a tradeoff our Fabric vs Power BI Premium comparison prices out. Creating a pipeline takes a Pro, PPU or Premium license.
To deploy, you need the pipeline admin role plus at least contributor rights in both the source and the target workspaces, plus ownership of any semantic model you deploy if your tenant blocks republishing by nonowners. Pipeline admin alone shows the pipeline but not its content. One deployment tops out at 300 items. Microsoft 365 groups can’t be pipeline admins.
Capacity per stage is a design choice. We put dev and test on a smaller shared capacity and production on its own, so a heavy test refresh can’t throttle live reports.
Comparing stages, approvals and deployment plans
Compare before you deploy. The pipeline marks each item as new, different or identical, and a review window shows schema changes.
Approvals are the gap. In the deployment pipelines documentation we read, there’s no built-in approval step before a stage deploys. Microsoft’s workflow page puts the approval gate in Azure DevOps or GitHub environments, or with a release manager who signs off before anyone selects Deploy in the Fabric portal for production. Our fix for small teams is simpler. Name who deploys to production, and limit contributor rights on that workspace.
Something new to watch. Deployment plans, a preview item, set deployment order and run actions before or after an item deploys. In the REST API, plan support is a beta that Microsoft doesn’t recommend for production.
How Do Deployment Rules, Autobinding and Variable Libraries Handle Per-Stage Settings?
Three mechanisms, each for different items. Deployment rules swap data sources, parameters or a notebook’s default lakehouse at deploy time. Autobinding reconnects dependent items to their counterparts in the target stage. Variable libraries hold one value set per stage that consuming items read at run time.
| Item | Data source rule | Parameter rule | Default lakehouse rule |
|---|---|---|---|
| Semantic model | Yes | Yes | No |
| Dataflow Gen1 | Yes | Yes | No |
| Paginated report | Yes | No | No |
| Mirrored database | Yes | No | No |
| Notebook | No | No | Yes |
Rules come with conditions, listed on Microsoft’s deployment rules page.
- You must own the item.
- No rules in the development stage.
- Rules apply on the next deployment.
- Unassign and reassign a workspace, and its rules are gone for good.
- Data source rules only swap between sources of the same type.
- If a rule’s parameter or data source disappears from the source item, deployment fails.
Autobinding and its exceptions
Autobinding is why a report deployed to test lands on the test semantic model, not the dev one. If the model it depends on isn’t in the target stage, the deployment fails. That’s what the Select related button prevents.
The exceptions are where teams get hurt.
- Direct Lake models don’t autobind. A Direct Lake model deployed to test keeps reading the dev lakehouse until you add a data source rule for Direct Lake on SQL, or M parameters with parameter rules for Direct Lake on OneLake.
- Dataflow Gen2 doesn’t autobind either, and a semantic model sourced from a Dataflow Gen2 CI/CD item can’t go through deployment pipelines at all.
- Autobinding across pipelines matches stage position, not stage name, and both pipelines need the same number of stages.
- When a parameter controls a connection, autobinding steps aside. Rebind with a parameter rule of type Text.
Variable libraries
Variable libraries are workspace items holding variables plus alternative value sets, one per environment. Each pipeline stage can point at a different active value set, so a pipeline in test reads the test connection without anyone editing it. Microsoft’s variable library overview lists pipelines, lakehouse shortcuts, notebooks, Dataflow Gen2, Copy job, user data functions and Eventstream among the consumers.
Status is a little murky. The overview carries no preview label, and the item appears on both supported lists without one, but Microsoft’s lakehouse ALM page still links to it as a preview. In our practice we treat it as ready for pipelines and notebooks, and we test every other consumer in a sandbox workspace before trusting it with a production connection string.
Notice what’s missing. Semantic models and reports aren’t on the consumer list. Power BI content still relies on rules and parameters, which is why mixed teams end up running both mechanisms side by side.
Why Do Semantic Models and Reports Deploy Differently From Lakehouses and Warehouses?
Because only definitions move. A semantic model arrives in a new stage empty and needs a refresh. A lakehouse arrives as an empty lakehouse. Tables, files and warehouse rows stay where they were.
Semantic models and reports
Print the list of what doesn’t copy, from Microsoft’s deployment process page. Data, permissions, workspace settings and app content stay put in the target stage, and for semantic models so do role assignments, refresh schedules, data source credentials, query caching settings and endorsement. Gateway mapping is manual after the first deployment too.
Data in an existing target model is kept when possible. Small changes like adding a table usually preserve it. Breaking schema changes or a new data source connection need a full refresh. With incremental refresh turned on, renaming a table or a noncalculated column in that table fails the deployment outright, because Fabric refuses a change that could drop partitions you already loaded.
On the authoring side, Power BI Desktop projects save a report and its model as folders of text files, with the model in TMDL and the report in PBIR. PBIR is generally available and now the default report format, per Microsoft’s PBIR documentation, and it splits every page and visual into its own JSON file.
Three PBIP details trip people up. Publishing from Desktop sends the local data cache along with the metadata, while Git integration and the Fabric APIs deploy metadata only. Sensitivity labels aren’t supported in projects. And the Windows 260-character path limit bites when table names are long, so keep the repo root short. Microsoft’s PBIP overview also recommends Git’s autocrlf setting, because Desktop writes CRLF line endings and the service writes LF.
Sources disagree on one point. The deployment pipelines limitations still say PBIR reports aren’t supported, while the PBIR page calls the format GA and the default, and both supported item lists include reports. Test a PBIR report through your pipeline first.
Lakehouses, warehouses, notebooks and pipelines
Only metadata is tracked for lakehouses, per Microsoft’s lakehouse Git and deployment page, meaning the name, description, SQL analytics endpoint metadata and shortcut definitions, and that table and file data is never overwritten. Deploying creates an empty lakehouse in the target if one doesn’t exist.
Shortcuts are the sneaky part. Internal OneLake shortcuts get remapped to the target workspace, but the tables they point at aren’t created for you. External shortcuts to ADLS Gen2 or S3 keep the same target in every stage, so a production lakehouse can quietly read development storage unless a variable library swaps the path. A deployment also replaces the target lakehouse’s whole shortcut state.
Warehouses deploy their schema, not their rows. They appear on both supported lists without a preview tag, though Microsoft’s warehouse development and deployment overview still shows a preview banner. Teams that want fine control use SQL database projects and DacFx in VS Code.
Notebooks and pipelines are the easy ones. A default lakehouse rule repoints a notebook. A variable library feeds a pipeline its connection. Hardcoded workspace and lakehouse GUIDs inside notebook code are the exception, and they’re exactly what fabric-cicd’s parameter file replaces.
Still choosing storage? Our lakehouse vs warehouse guide covers that call, and our Dataflow Gen2 vs pipeline vs notebook comparison covers which ingestion tool to build with.

When Do fabric-cicd and the Fabric REST APIs Make Sense?
When Git should be the source of truth for every stage, not just development. fabric-cicd is a Python library that publishes item definitions from a repository into a workspace, swapping environment-specific values on the way, so the same Git commit can land in test and then production with only the connection details changed.
Support status first. Microsoft announced official support for fabric-cicd on its Fabric Updates blog, and its fabric-cicd tutorial for Azure DevOps calls it Microsoft’s open-source deployment library. The project’s fabric-cicd documentation still points users to GitHub issues, so confirm which support channel covers you before you count on a ticket. It lists 31 item types and Python 3.9 to 3.14.
How it works, in plain terms. A pipeline in Azure DevOps or GitHub Actions checks out a branch, signs in as a service principal, and publishes every in-scope item type to the target workspace using the library’s publish function. A parameter.yml file swaps values per environment, and dynamic tokens resolve the target workspace ID or a named lakehouse’s ID at deploy time. The target workspace needs no Git connection.
Setup needs a Fabric admin to enable the tenant setting that lets service principals use Fabric APIs, and the service principal then needs Member or Admin rights on each target workspace. Keep its secret in Azure Key Vault.
One function deserves a warning label. unpublish_all_orphan_items deletes items of the in-scope types that exist in the workspace but not in the branch. Run it after a notebooks-only deploy and it removes every notebook that wasn’t in that release.
The REST APIs underneath
Underneath everything sit the Fabric REST APIs. The Deploy Stage Content API drives deployment pipelines from a script and is generally available, with deployment plan support still in beta. It takes up to 300 items per request, allows 10 calls a minute, and offers a validate-only option per item. Service principals work only when every item in the deployment supports them, so a release that includes Power BI dataflows can’t run under a service principal identity through this API.
For Git-first releases, the Items APIs and a bulk import API create or update items, and the Git APIs update a workspace from its branch. fabric-cicd wraps that plumbing. It doesn’t support deployment plans, though, even in its experimental bulk publish mode.
Which Approach Fits Your Team Size?
Start with deployment pipelines. Add Git on development once two or more people build. Move to fabric-cicd when Git must be the release record, approvals live in DevOps, or you manage dozens of workspaces.
This is ZapAI practice, not a Microsoft standard.
| Approach | Team | What you get | What you give up | Where it breaks |
|---|---|---|---|---|
| Deployment pipelines only | 1 to 3 BI developers, mostly Power BI | Low setup, stage compare, deployment history, rules | Version history and real rollback | Two people editing one dev workspace |
| Git on dev plus deployment pipelines | 3 to 10 people, Power BI plus data engineering | Pull requests and history in dev, low-code promotion, rules and autobinding | Approvals sit outside Fabric, and test can drift before production | Direct Lake and Dataflow Gen2 binding gaps |
| Fully scripted with fabric-cicd | 10 or more, regulated data, or dozens of workspaces | Git as the release record, the same commit in test and prod, approval gates, parameter files | Someone must own Python and YAML | Orphan cleanup on partial deploys, unsupported item types |
Our default for a mid-market team is the middle row, which Microsoft calls option three. Git connects only to development, and deployment pipelines carry content to test and production. Move to the scripted route when an auditor wants proof that production received the exact commit you tested, which Microsoft’s workflow page frames as deploying the recorded commit SHA rather than whatever the main branch holds that day.
Don’t jump straight to the bottom row. A YAML pipeline nobody maintains is worse than a manual one somebody understands. Still moving off Premium or Synapse? Our step-by-step Fabric migration guide covers that move.

What Breaks in Practice?
Bindings, rules and assumptions about data. The failed Fabric releases we’re asked to fix usually trace back to an item pointing at the wrong stage or a setting nobody copied, not to the tooling or a bug.
- Report deploy fails. Its semantic model isn’t in the target stage. Use Select related.
- Direct Lake model reads dev. No autobinding there. Add the rule or parameter.
- Rules vanish. Someone unassigned and reassigned a workspace.
- Duplicate items. Items created after assignment weren’t paired.
- Empty production lakehouse. Definitions moved. Data didn’t.
- Refresh never runs in test. Schedules and credentials don’t copy.
- Production shortcut reads dev storage. External shortcuts keep their target.
- Notebooks deleted by a script. Orphan cleanup after a partial deploy.
- Git commit refused. Over 50 MB on GitHub, or past 1,000 items.
- Service principal deploy fails. Dataflows don’t support it.
- Circular dependency. Item A references B, B references A.
None of these are exotic. Each one sits in Microsoft’s own documentation. Read it before go-live.
A Fabric Deployment Checklist
ZapAI’s working list, not Microsoft’s. Run it before the first production deployment.
Before you build
- A Fabric capacity behind every stage workspace.
- Stage count and names agreed. They’re permanent.
- Tenant switches on for Git and service principals.
- Repo, branch and folder chosen.
- Feature workspaces created through branch out.
Configuration
- Deployment rules in test and production, created by the item owner.
- An active value set per stage in each variable library.
- Direct Lake bindings checked by hand.
- External shortcut paths checked per stage.
- Gateway mapping, credentials and refresh schedules set in each stage.
Release
- Compare stages before every deploy.
- Select related for reports.
- A named person approves production.
- Nothing edited in test between validation and production.
- Rollback tested once, on purpose.
After go-live
- Semantic models refreshed.
- Apps updated by hand. Deployment doesn’t touch them.
- Ownership checked, since the deploying user owns newly created semantic models.
- February 28, 2027 on the calendar.
What Could Change After Ignite 2026?
Probably something. Ignite runs November 17 to 20, 2026, at Moscone Center in San Francisco, and Fabric CI/CD features have moved fast this year. Treat the preview labels here as a snapshot.
What we’ll check first. Preview labels on reports and semantic models, deployment plan status, variable library status, and the PBIR limitation note. Expect a refresh by late November.
Wrapping Up
Deployment pipelines and Git integration solve different problems, and most Fabric teams need both. Keep Git on development, let pipelines or fabric-cicd carry definitions forward, handle per-stage settings with rules and variable libraries, and remember that the data itself stays behind in whatever stage loaded it. Check bindings. Then check them again.
ZapAI is a Microsoft Dynamics 365, Power Platform, Fabric and AI consulting firm in Irving, Texas, working with businesses across Dallas-Fort Worth and nationwide. Our Fabric data engineering team builds the Git, pipeline and fabric-cicd setup, our Fabric data warehouse consultants handle schema releases, and our Power BI consultants move semantic models and reports onto PBIP. Ready to stop publishing straight to production? Talk to us about a Fabric deployment setup.
Questions Teams Ask About Fabric Deployment Pipelines
Do Fabric deployment pipelines copy data?
No. Only item definitions and metadata move between stages. Semantic models need a refresh after their first deployment, and a lakehouse arrives empty.
What license do Fabric deployment pipelines need?
Workspaces in every stage must sit on a Fabric capacity or use Premium Per User. Creating a pipeline needs a Pro, PPU or Premium license, and deploying needs pipeline admin plus contributor rights in both workspaces.
Does Fabric Git integration work with GitHub?
Yes. Azure DevOps, GitHub and GitHub Enterprise are supported, cloud versions only. GitHub caps a single commit at 50 MB.
What’s the stage limit for a deployment pipeline?
Between two and ten, with three by default. Stage count and names can’t be changed after you create the pipeline.
Is fabric-cicd supported by Microsoft?
Microsoft announced official support for the library, and Learn calls it Microsoft’s open-source deployment library. Its documentation still routes issues through GitHub, so confirm your support path first.
Are Fabric variable libraries generally available?
Mostly, by the evidence. The Learn overview has no preview label and both supported item lists show the variable library without one, but one lakehouse page still calls it a preview.
Can deployment pipelines require approval before production?
Not natively, based on the documentation we reviewed. Microsoft’s guidance places approval gates in Azure DevOps or GitHub environments, or with a release manager who signs off before deployment.
