Microsoft Fabric CI/CD

0.3.1 · active · verified Thu Apr 16

The `fabric-cicd` library provides a Pythonic interface and command-line tool for implementing Continuous Integration/Continuous Deployment (CI/CD) pipelines for Microsoft Fabric artifacts. It enables programmatic deployment, lifecycle management, and automation of Fabric items like notebooks, lakehouses, and data pipelines. Currently at version 0.3.1, it is under active development with frequent releases targeting new Fabric capabilities and improvements.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize the `FabricCICDClient` using Azure Service Principal credentials and perform a basic operation like listing Fabric workspaces. It uses environment variables for secure credential management. Authentication via a Service Principal is the recommended approach for automated CI/CD pipelines in Microsoft Fabric.

import os
from fabric_cicd.fabric_cicd_client import FabricCICDClient

# Ensure these environment variables are set for your service principal
TENANT_ID = os.environ.get('FABRIC_TENANT_ID', 'YOUR_TENANT_ID')
CLIENT_ID = os.environ.get('FABRIC_CLIENT_ID', 'YOUR_CLIENT_ID')
CLIENT_SECRET = os.environ.get('FABRIC_CLIENT_SECRET', 'YOUR_CLIENT_SECRET')

if not all([TENANT_ID, CLIENT_ID, CLIENT_SECRET]):
    print("Error: FABRIC_TENANT_ID, FABRIC_CLIENT_ID, and FABRIC_CLIENT_SECRET environment variables must be set.")
    print("Please configure these environment variables with your Azure Service Principal credentials.")
    exit(1)

try:
    # Initialize the client
    client = FabricCICDClient(
        tenant_id=TENANT_ID,
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET
    )

    # Example: List workspaces (requires appropriate permissions)
    print("\nFetching Fabric workspaces...")
    workspaces = client.get_workspaces()
    if workspaces:
        print(f"Found {len(workspaces)} workspaces:")
        for ws in workspaces[:3]: # Print first 3 for brevity
            print(f"  - {ws.display_name} (ID: {ws.id})")
    else:
        print("No workspaces found or insufficient permissions.")

    # Example: Deploy a dummy item (requires actual item ID and target workspace ID)
    # Uncomment and replace placeholders with actual values for deployment functionality.
    # source_workspace_id = "<YOUR_SOURCE_WORKSPACE_ID>"
    # item_id = "<YOUR_ITEM_ID>" # e.g., Notebook ID, Lakehouse ID
    # target_workspace_id = "<YOUR_TARGET_WORKSPACE_ID>"
    #
    # print(f"\nAttempting to deploy item {item_id} from {source_workspace_id} to {target_workspace_id}...")
    # try:
    #     result = client.deploy_item(source_workspace_id, item_id, target_workspace_id)
    #     print(f"Deployment successful: {result}")
    # except Exception as e:
    #     print(f"Deployment failed: {e}")

except Exception as e:
    print(f"\nAn error occurred during client operation: {e}")

view raw JSON →