Skip to content

Promote test to main: bulk import workflows + fabric-cicd renames#18

Merged
michaeldeongreen merged 6 commits into
mainfrom
test
May 8, 2026
Merged

Promote test to main: bulk import workflows + fabric-cicd renames#18
michaeldeongreen merged 6 commits into
mainfrom
test

Conversation

@michaeldeongreen

Copy link
Copy Markdown
Owner

Promotes all the workflow changes from test to main:

  • New: reusable-deploy-bulk.yml, deploy-test-bulk.yml, deploy-prod-bulk.yml
  • Renamed: Deploy to Test -> Deploy to Test (fabric-cicd), same for Prod
  • Updated: etl-test.yml and etl-prod.yml workflow_run.workflows lists to match new names
  • Fix: bulk payload builder now excludes .gitkeep and root-level files

Why this PR is needed

GitHub's workflow_run listener only evaluates from the default branch (main). After validating bulk in Test, we discovered that Deploy to Test (Bulk API)'s success did not chain to ETL because main's etl-test.yml doesn't yet know that workflow exists. Promoting to main resolves the listener gap so future bulk runs trigger ETL correctly.

Safety

DEPLOY_METHOD has been flipped back to fabric-cicd before opening this PR, so the merge to main will trigger Deploy to Prod (fabric-cicd) (the proven path) against the empty Prod workspace. The bulk path will skip on this run.

Validation expected after merge

  1. Deploy to Prod (fabric-cicd) runs and succeeds against empty Prod workspace
  2. Deploy to Prod (Bulk API) skips
  3. ETL - Prod fires once after fabric-cicd succeeds

New workflows add a second deployment path using the Fabric Bulk Import Item
Definitions API (Preview), running in parallel with the existing fabric-cicd
workflows. Selection between the two is controlled by the DEPLOY_METHOD
repository variable:

  - 'fabric-cicd' or unset: existing fabric-cicd path runs (default)
  - 'bulk':                 new bulk import path runs
  - any other value:        both deploy workflows skip

New files:
  - .github/workflows/reusable-deploy-bulk.yml: token, payload, POST,
    LRO polling, per-item status verification
  - .github/workflows/deploy-test-bulk.yml: Test orchestrator
  - .github/workflows/deploy-prod-bulk.yml: Prod orchestrator

Modified:
  - deploy-test.yml, deploy-prod.yml: added DEPLOY_METHOD if-gate
  - etl-test.yml, etl-prod.yml: registered bulk workflows in workflow_run
    so ETL fires once after whichever deploy actually ran
Promote dev to test: Bulk Import API workflows
Renames the display names of the fabric-cicd deployment workflows from
'Deploy to Test'/'Deploy to Prod' to 'Deploy to Test (fabric-cicd)' and
'Deploy to Prod (fabric-cicd)' so the deployment method is explicit in
the GitHub Actions UI alongside the '(Bulk API)' variants.

Updates the workflow_run.workflows lists in etl-test.yml and etl-prod.yml
to match the new names, preserving the ETL chaining behavior.
Promote dev to test: workflow rename + first bulk deploy
Fixes a 400 RequestCouldNotBeParsed error from the Bulk Import API caused by
sending the .gitkeep file at the root of data/fabric/ as a definition part.
The API rejects paths that don't fit the *.<Type>/... item pattern.

Two layers of exclusion now apply:
  - Named exclusions: parameter.yml, .gitkeep
  - Structural rule: any file directly under repository_directory is skipped
    because item definitions only live inside *.<Type>/ subfolders
Promote fix to test: exclude root-level files from bulk payload
@michaeldeongreen michaeldeongreen merged commit 3694fe2 into main May 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant