mcpField
D
deployment-admin

deployment-admin

github.com/josiahsiegelCloud & DevOps5990 installsUpdated 19w ago
Repository

About deployment-admin

A deployment and governance skill for Power BI administrators and delivery teams, covering environment promotion, CI/CD, access security, capacity, and workspace management.

Key features

  1. 01Deployment pipelines and REST API automation
  2. 02GitHub Actions and Azure DevOps CI/CD
  3. 03Fabric Git integration and branching
  4. 04RLS and OLS security configuration
  5. 05Capacity and workspace role management

Use cases

  1. 01Promote content across development, test, and production
  2. 02Deploy PBIP projects through CI/CD
  3. 03Restrict data access by user or role
  4. 04Manage workspace permissions and capacity

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill deployment-admin

After installing, type/deployment-adminin Claude Code to confirm it loaded.

Bundled filesreferences/governance-checklist.mdreferences/report-server-detail.md

Details

From the project README

Deployment and Administration

Overview

Power BI deployment spans from development to production across workspaces, capacities, and environments. This skill covers deployment pipelines, CI/CD automation, security configuration, capacity management, and governance best practices.

Deployment Pipelines

Built-in Power BI feature for promoting content through environments:

StagePurposeTypical Use
DevelopmentBuild and iterateDevelopers test changes
TestValidationQA reviews, user acceptance
ProductionEnd usersLive reports and dashboards

Requirements: Premium, PPU, or Fabric capacity on all stage workspaces.

Deployment rules:

  • Content types deployed: reports, semantic models, dataflows, paginated reports
  • Parameterization rules handle environment-specific values (server names, databases)
  • Backward deployment (prod to dev) is supported but use with caution
  • Auto-bind connects deployed reports to the correct semantic model in each stage
Pipeline Automation via REST API
# Get deployment pipelines
GET https://api.powerbi.com/v1.0/myorg/pipelines

# Deploy all content from stage 0 (Dev) to stage 1 (Test)
POST https://api.powerbi.com/v1.0/myorg/pipelines/{pipelineId}/deployAll
{
  "sourceStageOrder": 0,
  "options": {
    "allowOverwriteArtifact": true,
    "allowCreateArtifact": true,
    "allowOverwriteTargetArtifactLabel": true
  },
  "note": "Automated deployment from CI/CD"
}

CI/CD with GitHub Actions

PBIP-Based Deployment
name: Power BI Deploy
on:
  push:
    branches: [main]
    paths: ['reports/**']

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Azure Login (Service Principal)
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Get Access Token
        id: token
        run: |
          TOKEN=$(az account get-access-token \
            --resource https://analysis.windows.net/powerbi/api \
            --query accessToken -o tsv)
          echo "::add-mask::$TOKEN"
          echo "token=$TOKEN" >> $GITHUB_OUTPUT

      - name: Deploy via Fabric REST API
        run: |
          # Import PBIP to workspace using Fabric Git integration
          # or use deployment pipeline API
          curl -X POST \
            "https://api.powerbi.com/v1.0/myorg/pipelines/${{ secrets.PIPELINE_ID }}/deployAll" \
            -H "Authorization: Bearer ${{ steps.token.outputs.token }}" \
            -H "Content-Type: application/json" \
            -d '{
              "sourceStageOrder": 0,
              "options": {
                "allowOverwriteArtifact": true,
                "allowCreateArtifact": true
              }
            }'
Validation Step (Best Practice Analyzer)
      - name: Run Tabular Editor BPA
        run: |
          # Install Tabular Editor CLI
          dotnet tool install -g TabularEditor.TOMWrapper
          # Run Best Practice Analyzer
          tabulareditor model.bim -A BPARules.json -V

CI/CD with Azure DevOps

trigger:
  branches:
    include: [main]
  paths:
    include: ['reports/*']

pool:
  vmImage: 'ubuntu-latest'

steps:
  - task: PowerBIActions@5
    displayName: 'Deploy to Test'
    inputs:
      PowerBIServiceConnection: 'PowerBI-ServicePrincipal'
      Action: 'Publish'
      WorkspaceName: 'Sales-Test'
      PbixFile: '$(Build.SourcesDirectory)/reports/*.pbix'
      OverWrite: true

  - task: PowerBIActions@5
    displayName: 'Refresh Dataset'
    inputs:
      PowerBIServiceConnection: 'PowerBI-ServicePrincipal'
      Action: 'DatasetRefresh'
      WorkspaceName: 'Sales-Test'
      DatasetName: 'SalesModel'

Azure DevOps extension: Install "Power BI Actions" from the Visual Studio Marketplace for native pipeline tasks.

Fabric Git Integration

Native source control integration (GA since late 2023):

  1. Connect workspace to repo: Workspace settings > Git integration > Connect
  2. Supported repos: Azure DevOps Repos, GitHub (2025+)
  3. Sync direction: Workspace to repo (commit) or repo to workspace (update)
  4. Supported items: Reports, semantic models, notebooks, pipelines, lakehouses

Branching strategy:

  • Main branch connected to Production workspace
  • Feature branches for development
  • PR-based review and merge
  • Auto-sync on merge to main

Security

Row-Level Security (RLS)

Define in Power BI Desktop (Modeling > Manage Roles):

// Static RLS - filter by specific values
[Region] = "West"

// Dynamic RLS - filter by logged-in user
[Email] = USERPRINCIPALNAME()

// Dynamic RLS with lookup table
[ManagerEmail] = USERPRINCIPALNAME()
|| PATHCONTAINS([ManagerPath], LOOKUPVALUE(
    Employees[EmployeeID],
    Employees[Email], USERPRINCIPALNAME()
))

Testing:

  • Desktop: Modeling > View as > select role (does not support USERPRINCIPALNAME)
  • Service: semantic model settings > Security > test role with specific user
  • Embedded: generate embed token with effective identity

Rules:

  • RLS applies to Viewers only; Admins/Members/Contributors bypass RLS
  • Must add users/groups to roles in the Power BI Service
  • Service Principal can test RLS by generating tokens with EffectiveIdentity
  • RLS filters propagate through relationships (single-direction)
  • With bidirectional filtering, test carefully for security leaks
Object-Level Security (OLS)

Restrict access to specific tables/columns for certain roles. Configured via:

  • Tabular Editor (recommended)
  • TOM/.NET SDK
  • XMLA endpoint with TMSL
// TMSL to add OLS
{
  "createOrReplace": {
    "object": { "database": "model", "role": "RestrictedUser" },
    "role": {
      "name": "RestrictedUser",
      "tablePermissions": [{
        "name": "Employees",
        "columnPermissions": [{
          "name": "Salary",
          "metadataPermission": "none"
        }]
      }]
    }
  }
}

Capacity Management

SKU TypeUse CaseFeatures
Power BI ProIndividual collaboration1GB model, 8 refreshes/day
Power BI Premium Per User (PPU)Per-user premium features100GB model, 48 refreshes/day, XMLA, deployment pipelines
Power BI Premium (P SKUs)Organization-wide, deprecated in favor of Fabric F SKUsDedicated capacity
Fabric F SKUsModern capacityF2 to F2048, replaces P/A/EM SKUs
Power BI Embedded (A/EM SKUs)App embedding, deprecated for F SKUsAPI-driven

Fabric F-SKU equivalency (2026):

F-SKUEquivalent LegacyCUsPBI Content Viewing
F2EM12No (API only)
F4EM24No
F8EM38No
F16P1 (partial)16No
F32P1 (partial)32No
F64P164Yes (unlimited users)
F128P2128Yes
F256P3256Yes

Key rule: F64 is the minimum Fabric SKU that includes Power BI content viewing rights for users without Pro/PPU licenses.

Workspace Management

Workspace RolePermissions
AdminFull control, add/remove members, delete workspace
MemberPublish, edit content, share, manage permissions
ContributorCreate/edit content, cannot share or manage permissions
ViewerView content only, subject to RLS

Best practices:

  • Use security groups for role assignment (not individual users)
  • Separate workspaces per environment (Dev/Test/Prod)
  • Use apps for end-user content distribution
  • Limit Admin role to 2-3 people per workspace
  • Enable audit logging for governance

Power BI Report Server (On-Premises)

For comprehensive Report Server guidance, see references/report-server-detail.md. Key facts: requires SQL Server Enterprise SA or Premium license; uses PBIX only (no PBIR); release cycle January/May/September; latest version January 2026.

Fabric Git Integration Updates (2025-2026)

Git integration enhancements since initial GA:

  • GitHub support added alongside Azure DevOps Repos (2025)
  • Real-time intelligence items (Eventstream, KQL DB, Data Activator) now support Git integration
  • Dataflow Gen2 supports CI/CD and Git integration
  • Deployment pipelines support Git-triggered automation
  • Improved conflict resolution for PBIR-format reports (per-visual file granularity)

Additional Resources

Reference Files
  • references/governance-checklist.md -- Tenant settings, audit logging, sensitivity labels, data loss prevention, and compliance checklist
  • references/report-server-detail.md -- Power BI Report Server on-premises: versions, feature comparison, REST API, security, deployment architecture

Comments

Markdown supported