Skip to content

Commit 0475911

Browse files
committed
chore(ci): disable fabric-deploy.yml auto-trigger; document Azure DevOps path
The fabric-deploy.yml workflow has been failing every push since it landed because it depends on Service Principal secrets we deferred + the GitHub-Actions deploy path duplicates what Fabric Git Integration already does on the DevOps side. Trigger changed to workflow_dispatch only (manual only); file kept for reference if/when CI-driven deploys are wanted. Cleaned up 4 failed runs (26625180769, 26613056578, 26583077216, 26579207556). Documented the broader context in fabric/docs/DEPLOYMENT.md "Why Azure DevOps": - Fabric trial tenant blocks GitHub Git Integration at the admin level ("Users can sync workspace items with GitHub repositories" disabled, no path to flip it from a trial tenant admin role). - Azure DevOps Git Integration unaffected — same MS account, same workspace. - Chosen arrangement: GitHub = canonical public repo + portfolio surface; Azure DevOps = mirror that Fabric Git Integration reads from; manual or periodic re-import keeps them in sync. - If/when off the trial onto a paid F-SKU tenant, GitHub Git Integration may become available and the DevOps mirror can be retired — repo content is identical between the two. CI flow section rewritten to document the disabled state explicitly + the exact steps to re-enable later (register Service Principal, add 6 secrets to fabric-prod GitHub Environment, change `on:` back to push trigger). No code changes; no test impact; no wheel rebuild.
1 parent 8c1deb5 commit 0475911

2 files changed

Lines changed: 74 additions & 22 deletions

File tree

.github/workflows/fabric-deploy.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
name: fabric deploy
22

3+
# DISABLED auto-trigger — manual only (workflow_dispatch).
4+
#
5+
# Current deploy path uses Azure DevOps + Fabric Git Integration for notebooks
6+
# and manual UI upload for the core wheel. The original GitHub-Actions-driven
7+
# path here requires a Service Principal that we deferred; on the Fabric trial
8+
# tenant we were on, GitHub Git Integration was blocked at the admin level so
9+
# DevOps became the path. See fabric/docs/DEPLOYMENT.md "Why Azure DevOps."
10+
#
11+
# Keep this file for reference: if/when the Service Principal is registered
12+
# and CI-driven deploys are wanted, change `on:` back to `push: branches: [main]`
13+
# + register the FABRIC_* secrets in the fabric-prod GitHub Environment.
314
on:
4-
push:
5-
branches: [main]
6-
paths:
7-
- "core/**"
8-
- "fabric/**"
9-
- ".github/workflows/fabric-deploy.yml"
1015
workflow_dispatch:
1116

1217
# Each deploy targets a single environment with its own secrets — see

fabric/docs/DEPLOYMENT.md

Lines changed: 63 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -169,27 +169,74 @@ Wires the workspace ↔ `/fabric/notebooks/` so notebook commits flow both ways.
169169

170170
---
171171

172-
## CI flow
172+
## Why Azure DevOps (not GitHub Git Integration)
173+
174+
GitHub is the canonical public-facing repo. **Azure DevOps mirrors GitHub**
175+
and is the Git provider Fabric Git Integration is wired to.
173176

174-
[`.github/workflows/fabric-deploy.yml`](../../.github/workflows/fabric-deploy.yml) runs on every push to `main` touching `core/**` or `fabric/**`:
177+
We didn't pick this for fun. On the Fabric trial tenant available to us,
178+
the **"Users can sync workspace items with GitHub repositories"** tenant
179+
setting is blocked at the admin level — Fabric Git Integration → Provider
180+
list shows GitHub greyed-out / "disabled by your administrator," with no
181+
way to flip it as a trial tenant admin. **Azure DevOps Git Integration is
182+
unaffected** — listed and connectable from the same workspace, same MS
183+
account.
175184

176-
1. Checkout repo, install `[local,dev,orchestration,fabric]` + `build` + `fabric-cicd`.
177-
2. `pytest fabric/tests/` — offline contract tests (5 pass, 1 fabric-marked test skipped without `FABRIC_TENANT_ID`).
178-
3. `python -m build --wheel --outdir dist/`.
179-
4. `python fabric/deploy/upload_wheel.py --wheel dist/scribe_iq_lakehouse*.whl --environment-id $FABRIC_ENVIRONMENT_ID` *(same script as Path B above)*.
180-
5. `fabric-cicd deploy --config fabric/deploy/fabric_cicd_config.yml` — syncs notebooks.
181-
6. `fabric-cicd smoke-run --config fabric/deploy/fabric_cicd_config.yml` — runs notebook 05 end-to-end.
185+
The chosen arrangement:
182186

183-
**GitHub secrets** — set on the `fabric-prod` GitHub Environment (Repo Settings → Environments → New environment `fabric-prod`):
187+
```
188+
GitHub Azure DevOps Fabric
189+
├─ canonical public repo → ├─ mirror of GitHub ─→ ├─ Git Integration
190+
├─ shows on portfolio ├─ Fabric pulls from here │ reads from DevOps
191+
├─ all PRs / CI / history └─ kept in sync via import └─ workspace items
192+
round-trip here
193+
```
184194

185-
- `FABRIC_TENANT_ID`
186-
- `FABRIC_CLIENT_ID`
187-
- `FABRIC_CLIENT_SECRET`
188-
- `FABRIC_WORKSPACE_ID`
189-
- `FABRIC_LAKEHOUSE_ID`
190-
- `FABRIC_ENVIRONMENT_ID`
195+
**Keeping the mirror in sync:** when GitHub gets a new commit, refresh
196+
DevOps via Repos → Files → Import (or set up a periodic sync job; for a
197+
solo-dev project a manual re-import every few commits is fine).
198+
Alternatively, configure `git push` locally to push to both remotes — see
199+
[Phase 6 of the Azure DevOps walkthrough](#) (left as a one-time setup).
200+
201+
**If you later move off the trial** (paid F-SKU, different tenant): GitHub
202+
Git Integration may become available and the DevOps mirror can be retired.
203+
The repo content is identical between the two; only the Fabric Git
204+
Integration provider would flip.
205+
206+
## CI flow
191207

192-
Recommend restricting `fabric-prod` deployments to the `main` branch.
208+
[`.github/workflows/fabric-deploy.yml`](../../.github/workflows/fabric-deploy.yml) **is currently
209+
disabled (manual-trigger only).**
210+
211+
Reason: the workflow path (GitHub Actions → Service Principal → Fabric REST
212+
API → notebook + wheel deploy) duplicates what Fabric Git Integration +
213+
manual wheel upload already does on the DevOps path. Plus we never
214+
registered the Service Principal, so every auto-trigger run was failing
215+
with credential errors. Trigger changed to `workflow_dispatch` to stop the
216+
noise; file kept for reference.
217+
218+
**To re-enable later** (if you set up Service Principal + secrets):
219+
220+
1. Register Service Principal in Entra ID; grant Contributor on the Fabric
221+
workspace.
222+
2. Add `fabric-prod` GitHub Environment with these secrets:
223+
- `FABRIC_TENANT_ID`, `FABRIC_CLIENT_ID`, `FABRIC_CLIENT_SECRET`
224+
- `FABRIC_WORKSPACE_ID`, `FABRIC_LAKEHOUSE_ID`, `FABRIC_ENVIRONMENT_ID`
225+
3. In `fabric-deploy.yml` change `on:` back to:
226+
```yaml
227+
on:
228+
push:
229+
branches: [main]
230+
paths: ["core/**", "fabric/**", ".github/workflows/fabric-deploy.yml"]
231+
workflow_dispatch:
232+
```
233+
234+
When enabled, the workflow:
235+
1. Installs `[local,dev,orchestration,fabric]` + `build` + `fabric-cicd`.
236+
2. Runs `pytest fabric/tests/` (5 contract tests pass; the `@pytest.mark.fabric` test runs against the real workspace).
237+
3. Builds the core wheel.
238+
4. Uploads via `fabric/deploy/upload_wheel.py` (MSAL Service Principal → REST PUT to `/environments/{env}/staging/libraries` → POST `/publish` → poll until `Success`).
239+
5. Triggers `fabric-cicd deploy + smoke-run` against notebook 05.
193240

194241
---
195242

0 commit comments

Comments
 (0)