I wrote a deployment script for Microsoft Fabric. It is a thin wrapper around
the fabric-cicd library. Maybe 150 lines with the comments.
Then I wrote down everything that has to be true before it works. That list came
to 43 items.
That ratio is the thing worth knowing before you start.
The breakdown
| Category | Checks |
|---|---|
| Fabric environment | 6 |
| Identity and security | 10 |
| Azure DevOps configuration | 10 |
| Deployment configuration | 7 |
| Deployment validation | 4 |
| Post-deployment verification | 6 |
Identity is the largest, and three of those ten are the same check repeated once
per environment: is the service principal actually a member of this
workspace.
DEV, UAT and PROD, separately. Adding it to one does nothing for the others.
Why this is annoying specifically
Nothing in your repository indicates a permission is missing. The code is
byte-identical whether the service principal has access to all three workspaces
or none of them.
So the failure surfaces at the deployment step, which is the last thing in the
chain and the first thing you look at. The error is real. The deployment did
fail. Your code is fine.
You start debugging in the wrong place by default, and the stack trace does not
help because there is nothing wrong with the stack.
Two of them are not settings
Two items on the list are architectural decisions wearing checkbox clothing:
- Only the Development workspace is connected to Git
- UAT and PROD are deployment targets only
Connect UAT to Git as well and that environment now has two sources of truth:
the repository, and whoever last edited the workspace in the browser. Both look
current. Nothing errors. You find out during an incident, when the thing you
deployed is not the thing running.
A checkbox is a strange home for a decision that consequential. It belongs there
anyway, because it has to hold before anything downstream means anything.
The practical takeaway
Check before you run, not after it fails. Diagnosing a missing prerequisite from
a deployment error is slower than confirming it up front, every time.
The full checklist is published here:
docs/checklists/DEPLOYMENT_READINESS_CHECKLIST.md in [https://github.com/vedaforge-team/fabric-cicd-reference/tree/v1.0.0].
Of everything that implementation produced, it is the part I still use.
Full walkthrough: [https://www.linkedin.com/pulse/building-enterprise-microsoft-fabric-cicd-practical-guide-mintu-ghosh-f3dbf/].
Top comments (0)