Skip to content

Migrate from fabric-cicd

Everything you have stays. Keep your config.yml files and parameter.yml rules: allez runs each workspace folder through the Fabric CLI's fab deploy as a fabric-cicd configuration deployment. If you call fabric-cicd's Python API directly, first convert to a configuration deployment per workspace folder.

We start with the main new file: a root allez.yml. It lists the environments and the order the config.yml files deploy in.

The following pages cover hooks and overlays, branch workspaces and cross-workspace references.

Repo structure

One repo holds one solution. fabric/ is the solution root; each folder directly beneath it is one workspace in each environment. A workspace folder still looks like a fabric-cicd repo: a config.yml, a parameter.yml and the <Name>.<Type> item folders.

└── 📁 fabric/
    ├── 📁 data/
    │   ├── 📄 config.yml                   # (1)!
    │   ├── 📄 parameter.yml                # (2)!
    │   ├── 📁 Ingest.Notebook/
    │   └── 📁 Raw.Lakehouse/
    └── 📁 reporting/
        ├── 📄 config.yml
        ├── 📄 parameter.yml
        ├── 📁 Sales.SemanticModel/
        └── 📁 Sales.Report/
  1. Workspace targets and publish scope. core.workspace names each environment's workspace.
  2. Environment-specific replacements.

parameter.yml extend: templates

Existing extend: templates keep working. They must be one level deep and stay inside their workspace folder (splitting a large parameter.yml).

The deployment dag

Add a root allez.yml, list the environments and the order the config.yml files deploy in. allez deploy runs one fab deploy per node, in that order. Only configs named in the dag: deploy.

└── 📁 fabric/
    ├── 📄 allez.yml                        # (1)!
    ├── 📁 data/
    └── 📁 reporting/
  1. Solution root allez.yml: environments and the deployment dag. Its first line names the schema at the tag you install (editor support).
fabric/allez.yml
# yaml-language-server: $schema=https://raw.githubusercontent.com/EvaluationContext/allez/0.1.0/allez.schema.json
version: 1
environments: [dev]
dag:
  - config: data/config.yml
  - config: reporting/config.yml
    depends_on: [data/config.yml]

depends_on: decides the order. Where it says nothing, two nodes run in the order they are listed. A node that depends on nothing runs before any node that waits on another, wherever it sits in the list.

Full reference: allez.yml and the deployment dag.

Preview the deploy

From the repo root, preview it without credentials or changes to Fabric:

allez deploy fabric --env dev --plan

The plan shows data before reporting and the exact fab deploy command for each. Without --plan, the same command deploys. Every verb that calls Fabric takes --plan (commands).