Skip to main content

Fabric Launcher icon

license releases contributors commits Package version Monthly Downloads Socket Badge


Fabric Launcher: From repo to workspace, deploy Fabric solutions effortlessly

A Python library to automate deployment of Microsoft Fabric solutions from GitHub repositories into Fabric workspaces. Fabric-launcher is designed to run within Fabric notebooks. It is ideal for simple, automated deployment for solution accelerators, demos, tutorials, and samples.

fabric-launcher is a wrapper around fabric-cicd and supports all Fabric item types that fabric-cicd supports.

Overview

fabric-launcher provides a high-level Python interface for orchestrating end-to-end deployment of Microsoft Fabric workspace solutions. It's designed for use within Fabric Python notebooks and simplifies:

  • 📥 Downloading source code from GitHub repositories
  • 🚀 Deploying artifacts to Fabric workspaces (all types supported by fabric-cicd)
  • 📁 Uploading files to Lakehouse Files area
  • ▶️ Triggering notebook execution for post-deployment tasks

Note: For parameterization, value replacement, and the latest item type compatibility, see the fabric-cicd documentation.

Installation

%pip install fabric-launcher
notebookutils.session.restartPython()

Quick Start

import notebookutils
from fabric_launcher import FabricLauncher

# Initialize and deploy
launcher = FabricLauncher(notebookutils)
launcher.download_and_deploy(
    repo_owner="myorg",
    repo_name="my-fabric-solution",
    workspace_folder="workspace"
)

With Configuration File (Recommended)

# Config file in your repo: config/deployment.yaml
launcher = FabricLauncher(
    notebookutils,
    config_repo_owner="myorg",
    config_repo_name="my-solution",
    config_file_path="config/deployment.yaml",
    environment="PROD"
)
launcher.download_and_deploy()

Staged Deployment

launcher.download_and_deploy(
    repo_owner="myorg",
    repo_name="my-solution",
    item_type_stages=[
        ["Lakehouse", "KQLDatabase"],     # Stage 1
        ["Notebook", "Eventstream"],       # Stage 2
        ["SemanticModel", "Report"]        # Stage 3
    ]
)

Examples

See the examples/ directory for complete working code:

Documentation

Key Features

✅ Simple API - High-level methods abstract complexity
✅ Fabric-native - Designed for Fabric notebooks with notebookutils
✅ Flexible deployment - Staged deployment or custom item type selection
✅ GitHub integration - Public and private repository support
✅ Configuration management - YAML/JSON config files with environment overrides
✅ Post-deployment validation - Automatic verification of deployed items
✅ Comprehensive reporting - Deployment tracking and audit trails

Supported Item Types

Supports all fabric-cicd item types:

Data: Lakehouse, KQLDatabase, Eventhouse
Compute: Notebook, Eventstream
Analytics: SemanticModel, Report, KQLDashboard
Other: Reflex, DataAgent, and more

See fabric-cicd docs for the complete list.

Note: For item types not yet supported by fabric-cicd, use post-deployment notebooks with custom code via launcher.run_notebook().

Safety Features

By default, fabric-launcher validates that the target workspace is empty (except for the current notebook) before deployment to prevent accidentally overwriting existing work.

# Default: validates workspace is empty
launcher = FabricLauncher(notebookutils)
launcher.download_and_deploy(...)  # Blocks if workspace has existing items

# To deploy to non-empty workspace (use with caution)
launcher = FabricLauncher(notebookutils, allow_non_empty_workspace=True)

Main Methods

Method Purpose
download_and_deploy() Download from GitHub and deploy in one operation
download_repository() Download repository to local directory
deploy_artifacts() Deploy Fabric items from local directory
upload_files_to_lakehouse() Upload files to Lakehouse Files area
copy_data_folders_to_lakehouse() Copy multiple folders to Lakehouse
run_notebook() Execute a Fabric notebook asynchronously
validate_deployment() Validate deployed items are accessible

See QUICKSTART.md for detailed syntax and parameters.

Post-Deployment Utilities

The fabric_launcher.post_deployment_utils module provides utility functions for common post-deployment tasks:

Item Management:

  • get_folder_id_by_name() - Find folders by display name
  • get_item_definition_from_repo() - Load item definitions from repository
  • scan_logical_ids() - Map logical IDs to actual workspace IDs
  • replace_logical_ids() - Replace logical IDs in definitions
  • create_or_update_fabric_item() - Generic item creation with logical ID replacement
  • move_item_to_folder() - Organize items into folders

Eventhouse & KQL Database:

  • get_kusto_query_uri() - Get Kusto query service URI for an Eventhouse
  • exec_kql_command() - Execute KQL management commands
  • create_shortcut() - Create OneLake shortcuts in Fabric items
  • create_accelerated_shortcut_in_kql_db() - Create shortcuts with accelerated external tables

SQL Endpoints:

  • get_sql_endpoint() - Get SQL endpoint connection strings for Lakehouse/Warehouse
  • exec_sql_query() - Execute SQL queries against Fabric SQL endpoints

These helpers are useful for:

  • Deploying custom item types not yet supported by fabric-cicd
  • Handling cross-item references and logical ID remapping
  • Post-deployment organization and configuration
  • Eventhouse and KQL Database setup with shortcuts
  • SQL-based data validation and queries

See examples/post_deployment_utils_examples.py for comprehensive usage examples including Eventhouse, KQL Database, and SQL operations.

Development and Testing

# Clone the repository
git clone https://github.com/microsoft/fabric-launcher.git
cd fabric-launcher

# Install in development mode
pip install -e .
pip install -r requirements-dev.txt

# Run tests
pytest tests/ -v

# Check code formatting
ruff format fabric_launcher/ tests/
ruff check fabric_launcher/ tests/

See tests/README.md for detailed testing documentation.

Requirements

  • Python 3.10, 3.11, or 3.12 (compatible with fabric-cicd dependency)
  • Access to Microsoft Fabric workspace
  • Running within a Fabric Python notebook (for notebookutils access)

Note: semantic-link-sempy is a runtime dependency that is pre-installed in Fabric notebook environments. For local development or testing outside of Fabric, the package uses mocked versions of these dependencies.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE for details.

Security

See SECURITY.md for security policy and reporting vulnerabilities.

Metadata

Release files for fabric-launcher 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fabric-launcher 0.4.1
File Size Uploaded
fabric_launcher-0.4.1.tar.gz 71.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fabric-launcher 0.4.1
File Interpreter ABI Platform
fabric_launcher-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 116.1 kB

Release files / fabric_launcher-0.4.1.tar.gz

Download URL fabric_launcher-0.4.1.tar.gz
Size 71.4 kB
Tags Source
SHA-256 checksum
How to use checksums
88b832deaf8400e85f89b3c1a4294e7b6a1e24c8cd16008f4200b194a1974808
BLAKE2b-256 checksum
How to use checksums
4724de2c7929f5694f142caa7e309530df1fc02ea23cf48c8e1d7179cb07fec1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 5, 2026.

Transparency log

Release files / fabric_launcher-0.4.1-py3-none-any.whl

Download URL fabric_launcher-0.4.1-py3-none-any.whl
Size 44.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8d45320346dea7a14cbfcef52dc6b982b0597289c3916bd44c31d4dd4d6055bd
BLAKE2b-256 checksum
How to use checksums
34312a131de58671897df09cd1d8c921217c793f49979045a301d986ac35bcec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.1.3

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page