You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+18-7Lines changed: 18 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,29 @@
1
1
# Microsoft Fabric SDLC Patterns
2
2
3
-
A reference implementation for CI/CD in Microsoft Fabric, demonstrating how to version-control, deploy, and manage Fabric workspace items across dev, test, and production environments using GitHub Actions and the [fabric-cicd](https://microsoft.github.io/fabric-cicd) Python library.
3
+
A reference implementation and solution accelerator for the developer workflow and CI/CD pipeline in Microsoft Fabric, demonstrating how to choose a release strategy, implement deployments, work day-to-day on feature branches, and govern the pipeline for dev, test, and production using GitHub Actions and the [fabric-cicd](https://microsoft.github.io/fabric-cicd) Python library. Both the developer workflow and the deployment pipeline are fully implemented end-to-end so the repo runs as a complete reference, not isolated examples.
4
+
5
+
*Based on field experience with Microsoft Fabric customers and partners. Opinions expressed here are my own and do not represent Microsoft's official guidance.*
4
6
5
7
---
6
8
7
9
## Who is this for?
8
10
9
-
Teams and engineers who need to establish a reliable software development lifecycle (SDLC) for Microsoft Fabric — including automated deployments, environment-specific configuration, and Git-based version control for Fabric items.
11
+
Engineers and platform teams responsible for getting Microsoft Fabric workloads from a developer's laptop to production safely and repeatably — covering the developer workflow, the deployment pipeline itself, and the governance layered on top.
12
+
13
+
Architects and decision-makers evaluating Fabric will also find the [CI/CD Release Options](fabric-cicd-release-options.md) and [Governance Considerations](fabric-cicd-governance-considerations.md) useful for understanding the operating model before committing.
10
14
11
15
---
12
16
13
17
## Architecture
14
18
15
19
```
20
+
Feature branch (feature/*)
21
+
│
22
+
│ PR → dev branch
23
+
▼
16
24
Git repo (dev branch)
17
25
│
18
-
│ PR merge → test branch
26
+
│ PR merge → test branch (source must be dev)
19
27
▼
20
28
┌──────────────────────────────────────────────┐
21
29
│ deploy-test.yml │
@@ -25,7 +33,7 @@ Git repo (dev branch)
25
33
│ └─ Fabric REST API: run notebook │
26
34
└──────────────────────────────────────────────┘
27
35
│
28
-
│ PR merge → main branch
36
+
│ PR merge → main branch (source must be test)
29
37
▼
30
38
┌──────────────────────────────────────────────┐
31
39
│ deploy-prod.yml │
@@ -36,6 +44,8 @@ Git repo (dev branch)
36
44
└──────────────────────────────────────────────┘
37
45
```
38
46
47
+
Branch protection (PR required, source-branch restrictions, status checks) is enforced by GitHub branch rulesets and the [enforce-promotion-path.yml](.github/workflows/enforce-promotion-path.yml) workflow — see the [Governance Considerations](fabric-cicd-governance-considerations.md).
|[CI/CD Release Options](fabric-cicd-release-options.md)| Evaluates all CI/CD release options for Fabric (Deployment Pipelines, Git-based, Build-based, Hybrid) and recommends the Hybrid approach. **Start here** if you're deciding on a strategy. |
48
58
|[Hybrid CI/CD Implementation Guide](fabric-hybrid-cicd-guide.md)| Deep dive into the implementation: workflow structure, configuration strategy, prerequisites, setup steps, and gotchas. |
49
59
|[Development Process](fabric-development-process.md)| How developers work day-to-day: branch-out workflow, the workspace swap script, and PR readiness check. |
60
+
|[CI/CD Governance Considerations](fabric-cicd-governance-considerations.md)| Considerations on identities, RBAC, branch protection, and approval gates for the CI/CD pipeline. Includes pointers to adjacent controls owned outside the pipeline (security/compliance topics). |
50
61
51
62
---
52
63
@@ -89,17 +100,17 @@ When designing your development and CI/CD processes, identify which items in you
89
100
2.**Three Fabric Workspaces** — Dev (Git-connected), Test, and Prod
90
101
3.**Service Principal** — With Contributor role on Test and Prod workspaces
91
102
4.**GitHub Environments** — `Test` and `Prod` with environment-scoped secrets
92
-
5.**Fabric Admin Setting** — "Service principals can use Fabric APIs" enabled
103
+
5.**Fabric Admin Setting** — Service principal access to Fabric APIs enabled in the Fabric Admin portal under Developer settings (see [developer tenant settings](https://learn.microsoft.com/en-us/fabric/admin/service-admin-portal-developer))
93
104
94
105
### Setup
95
106
96
107
1. Create a Service Principal and add it as Contributor on Test and Prod workspaces
2. Create GitHub Environments (`Test`, `Prod`) with secrets: `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `FABRIC_WORKSPACE_ID`*(this demo uses a client secret for simplicity; for production, evaluate [GitHub OIDC federation](fabric-cicd-governance-considerations.md#identity-model--pick-the-right-identity-for-the-job) to remove the stored secret)*
98
109
3. Connect the Dev workspace to the `dev` branch via Fabric Git integration (folder: `data/fabric/`)
99
110
4. Create `dev`, `test`, and `main` branches
100
111
5. Develop on `dev`, merge to `test` (triggers Test deploy), merge to `main` (triggers Prod deploy)
101
112
102
-
For detailed setup instructions, see the [Implementation Guide](fabric-hybrid-cicd-guide.md#prerequisites--setup).
113
+
For detailed setup instructions, see the [Implementation Guide](fabric-hybrid-cicd-guide.md#prerequisites--setup). For branch-protection rulesets, deploy-time approvals, and the source-branch promotion path enforced in this repo, see the [Governance Considerations](fabric-cicd-governance-considerations.md).
0 commit comments