Installation¶
This topic describes how to install, configure, and verify Unified Data Platform Deployment on a local machine or CI/CD environment.
1. Prerequisites¶
Before installing Unified Data Platform Deployment, confirm that the environment meets the following requirements.
1.1 System requirements¶
| Requirement | Minimum version | Notes |
|---|---|---|
| .NET SDK | 9.0 | Required to install and run the tool. Download from https://dotnet.microsoft.com/download. |
| Azure CLI | 2.50+ | Required for interactive authentication. Install from https://aka.ms/installazurecli. |
| Operating system | Windows 10+, macOS 12+, Linux | Any OS supported by the .NET 9 runtime. |
1.2 Microsoft Fabric requirements¶
| Requirement | Details |
|---|---|
| Fabric capacity | An active Fabric capacity (F2 or higher). The capacity GUID is available in the Fabric admin portal. |
| Workspace permissions | Admin or Contributor role on the target workspace, or permission to create new workspaces. |
| Entra ID (Azure AD) access | The authenticated identity must have Fabric API permissions. |
Important
Unified Data Platform Deployment calls the Microsoft Fabric REST API. If your organization uses Conditional Access policies or tenant restrictions, confirm that API access is allowed for your identity before proceeding.
2. Install the tool¶
Unified Data Platform Deployment ships as a .NET global tool. Install it with the .NET SDK:
This installs the udp-cicd CLI. To use the MCP server (for AI-assisted authoring in Claude Code, Cursor, and similar tools), install the companion tool:
Note
Global tools are installed to
~/.dotnet/tools(Linux/macOS) or%USERPROFILE%\.dotnet\tools(Windows). Ensure this directory is on yourPATH. The .NET SDK installer normally adds it for you.
2.1 Install from source¶
To build and install from the GitHub repository (for example, to use an unreleased feature):
git clone https://github.com/PatrickGallucci/udp-cicd.git
cd udp-cicd/dotnet
dotnet pack -c Release
dotnet tool install --global --add-source ./src/UdpCicd.Cli/bin/Release udp-cicd
The repository contains the engine (dotnet/src/UdpCicd.Core), the CLI (dotnet/src/UdpCicd.Cli, built on System.CommandLine), the MCP server (dotnet/src/UdpCicd.Mcp), and the test suite (dotnet/tests/UdpCicd.Core.Tests).
3. Verify the installation¶
3.1 Check the version¶
3.2 Run the diagnostic check¶
The diag command validates the .NET runtime, Azure CLI status, authentication, and Fabric API connectivity in a single step:
Example output (healthy environment):
udp-cicd diag
✓ .NET runtime 9.0.0
✓ Azure CLI installed
✓ Azure CLI authenticated
✓ Fabric API reachable
✓ udp.yml found
✓ Deployment validates
6 passed, 0 failed
Note
The
diagcommand does not require audp.ymlfile. If one is not found, it skips the deployment validation check. All other checks still run.
4. Set up authentication¶
Unified Data Platform Deployment uses the Azure.Identity library. The credential type is selected automatically from the environment:
| Condition | Credential used |
|---|---|
AZURE_TENANT_ID, AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET all set |
ClientSecretCredential (service principal) |
FABRIC_USE_BROWSER=true |
InteractiveBrowserCredential (browser sign-in) |
| Otherwise | DefaultAzureCredential (managed identity, environment, or az login session) |
4.1 Interactive login (development)¶
Use the Azure CLI to sign in interactively. This is the recommended method for local development.
Then run commands against the development environment:
Note
If you have access to multiple Azure tenants, specify the tenant explicitly:
az login --tenant your-tenant-id.
4.2 Service principal (CI/CD)¶
For automated pipelines, use a service principal with the following environment variables:
export AZURE_TENANT_ID="your-tenant-id"
export AZURE_CLIENT_ID="your-client-id"
export AZURE_CLIENT_SECRET="your-client-secret"
When all three variables are set, the tool authenticates with ClientSecretCredential. Run commands non-interactively using the --auto-approve flag:
To set up a service principal:
- Register an application in Entra ID (Azure AD).
- Create a client secret or configure certificate-based auth.
- Grant the service principal the Contributor role on the target Fabric workspace.
- If creating workspaces, grant the service principal permission to create workspaces in the Fabric tenant.
Warning
Never commit service principal credentials to source control. Use your CI/CD platform's secret management (for example, GitHub Actions secrets, Azure DevOps variable groups, or Azure Key Vault) to inject these values at runtime.
4.3 GitHub Actions example¶
# .github/workflows/deploy.yml
name: Deploy Fabric Deployment
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'
- run: dotnet tool install --global udp-cicd
- run: udp-cicd deploy --target prod --auto-approve
env:
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
See GitHub Actions and Azure DevOps for complete pipeline templates.
5. Upgrading¶
5.1 Check for updates¶
5.2 Upgrade to the latest version¶
5.3 Pin a specific version¶
For reproducible CI/CD pipelines, pin the version when installing:
Or commit a tool manifest (.config/dotnet-tools.json) and run dotnet tool restore.
6. Troubleshooting installation issues¶
6.1 udp-cicd: command not found¶
Cause: The .NET global tools directory is not on the PATH.
Resolution: Add it to the shell profile.
6.2 az login errors¶
Cause: The Azure CLI is not installed or not authenticated.
Resolution:
az --version # confirm the CLI is installed (see https://aka.ms/installazurecli)
az login # sign in
az account show --query '{name:name, tenantId:tenantId}' -o table
6.3 Proxy or firewall issues¶
If you are behind a corporate proxy, configure NuGet and the Azure CLI:
If your firewall blocks nuget.org, install from a private NuGet feed with --add-source <feed-url>.
7. Next steps¶
- Quick start tutorial -- Create and deploy your first deployment.
- CLI commands reference -- Full reference for all
udp-cicdcommands. - udp.yml reference -- Complete schema reference for deployment definitions.