Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Vigtig
Power BI Desktop-projekter er i øjeblikket en prøveversion.
fabric-cicd er et Python-bibliotek udviklet af Microsoft, som giver en kode-først metode for Fabric-udviklere til at deployere Fabric-elementer fra versionskontrol til arbejdsområder ved hjælp af deres kodedefinitionsformat, såsom semantiske modeller og rapporter med PBIP-filformatet.
I denne artikel lærer du, hvordan du:
- Udrul PBIP-filer manuelt fra din lokale maskine
- Parametriser PBIP-filer til miljøspecifikke konfigurationer
- Automatiser udrulninger med branch-baseret workspace-targeting ved brug af Azure DevOps eller GitHub Actions
Lær mere om PBIP-formatet i Power BI Desktop-projekter (PBIP) og oversigt over Fabric Git-integration.
Hvorfor fabric-cicd til PBIP-implementering?
fabric-cicd er specifikt designet til at implementere kildekodekontrollerede Fabric-artefakter og tilbyder flere fordele:
- Bruger Fabric native REST API'er - Bygget på officielle Microsoft Fabric API'er, hvilket sikrer kompatibilitet og langvarig understøttelse
- Python-native - Sømløs integration med moderne Python-baserede DevOps-arbejdsgange
- Parameterisering: Indbygget understøttelse af miljøspecifikke konfigurationer (arbejdsområde-ID'er, datakilder, forbindelsesstrenge)
- Udviklervenlige: Simple Python-scripts, der kan køre lokalt eller i CI/CD-pipelines
- Fleksibel implementeringskontrol: Udrul kun specifikke elementtyper (f.eks. semantiske modeller uden rapporter eller semantiske modeller med eller uden datacache) og sørg for konsistente konfigurationer som standardsider eller parametre uden manuel indgriben
- Orphan cleanup: Fjerner automatisk elementer fra arbejdsområdet, som ikke længere eksisterer i versionskontrollen
- Pålidelig autentificering: Bruger Azure Identity SDK med flere autentificeringsmuligheder
Notat
For komplet dokumentation, se fabric-cicd-dokumentationen.
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- Python (version 3.9 til 3.12)
- Et Power BI Desktop-projekt gemt i PBIP-format
- Adgang til et Microsoft Fabric-arbejdsområde med bidragyderrolle
For automatiserede udrulninger skal du også bruge:
- En serviceprincipal med mindst bidragyderrollen på mål-Fabric-arbejdsområder
- Access to Azure DevOps eller GitHub Actions
- Dine PBIP-filer i versionskontrol (Git, Azure DevOps eller GitHub)
Hurtig start
Denne hurtigstart viser dig, hvordan du deployer et PBIP-projekt fra din lokale maskine til et Fabric-arbejdsområde.
1. Installer fabric-cicd
Åbn din terminal og installer fabric-cicd:
pip install fabric-cicd
2. Forbered dit PBIP-projekt
Sørg for, at dit PBIP-projekt indeholder de nødvendige filer. En typisk PBIP-projektstruktur:
my-powerbi-project/
├── SalesAnalytics.Report/
│ ├── definition.pbir
│ └── definition/
│ └── pages/
├── SalesAnalytics.SemanticModel/
│ ├── definition.pbism
│ └── definition/
│ ├── model.tmdl
│ ├── tables/
│ └── ...
└── SalesAnalytics.pbip
For detaljeret information om nødvendige filer og formater, se Power BI Desktop projektrapportmappen og Power BI Desktop-projektens semantiske modelmappe.
Tips
For at oprette et PBIP-projekt, åbn din PBIX-fil i Power BI Desktop og gem den med > File Save As > Power BI Project (.pbip). Se Power BI Desktop-projekter for flere detaljer.
3. Opret deployment-script
Opret en deploy.py fil i din projektmappe:
import argparse
import sys
from azure.identity import InteractiveBrowserCredential, AzureCliCredential
from fabric_cicd import FabricWorkspace, publish_all_items
parser = argparse.ArgumentParser(description="Deploy PBIP to Fabric")
parser.add_argument("--workspace_id", type=str, required=True, help="Target workspace ID")
parser.add_argument("--environment", type=str, default="dev", help="Environment name")
args = parser.parse_args()
# Use AzureCliCredential in CI/CD, fall back to InteractiveBrowserCredential for local
try:
credential = AzureCliCredential()
except Exception:
credential = InteractiveBrowserCredential()
workspace_params = {
"workspace_id": args.workspace_id,
"environment": args.environment,
"repository_directory": ".",
"item_type_in_scope": ["SemanticModel", "Report"],
"token_credential": credential,
}
target_workspace = FabricWorkspace(**workspace_params)
publish_all_items(target_workspace)
4. Udsend
Kør deployment-scriptet med dit workspace-ID:
python deploy.py --workspace_id "11111111-1111-1111-1111-111111111111"
Din browser åbner for autentificering. Efter login deployerer fabric-cicd dine PBIP-filer til målarbejdsområdet. Du ser fremskridtsbeskeder som:
[info] Publishing SemanticModel 'SalesAnalytics'
Operation in progress. Checking again in 1 second (Attempt 1)...
Published
[info] Publishing Report 'SalesAnalytics'
Published
Udrulningen tager typisk 20-30 sekunder afhængigt af størrelsen på din semantiske model.
Notat
Første gang du deployer en semantisk model med datakilder, skal du manuelt konfigurere datakilde-credentials i Fabric-portalen. Gå til workspace > semantic model > Settings > Data source credentials. Efterfølgende udrulninger genbruger de gemte legitimationsoplysninger.
Miljøspecifik parameterisering
En af fabric-cicds mest kraftfulde funktioner er muligheden for at parametrisere dine PBIP-filer til forskellige miljøer. Dette er essentielt, når dine semantiske modeller refererer til miljøspecifikke ressourcer som workspace ID'er, lakehouse-ID'er eller forbindelsesstrenge.
Eksempel: Parametriser arbejdsområde- og lakehouse-ID'er
Opret en parameter.yml fil i din projektrod for at definere miljøspecifikke værdier:
find_replace:
# Replace workspace ID for DirectLake connection
- find_value: "11111111-1111-1111-1111-111111111111"
replace_value:
dev: "11111111-1111-1111-1111-111111111111" # Dev workspace
prod: "22222222-2222-2222-2222-222222222222" # Prod workspace
# Replace lakehouse ID for DirectLake semantic model
- find_value: "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
replace_value:
dev: "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # Dev lakehouse
prod: "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb" # Prod lakehouse
Når du kører python deploy.py --workspace_id "11111111-1111-1111-1111-111111111111" --environment dev, fabric-cicd automatisk:
- Læser parameter.yml filen
- Finder alle instanser af
find_valuei dine PBIP-definitionsfiler - Erstatter dem med det tilsvarende miljøspecifikke
replace_value - Udruler de modificerede definitioner til målarbejdsområdet
Automatiser udrulning
Du kan automatisere PBIP-udrulninger, så de kører, når kode er flettet ind i specifikke branchs i dit repository. Automatiseringen følger denne logik:
- En pipeline eller arbejdsgang udløses, når kode sendes til en konfigureret gren (f.eks.
devellermain) - Grennavnet bestemmer målmiljøet og arbejdsområdets ID
- Deployeringsscriptet kører automatisk med de relevante parametre
- Dine PBIP-artefakter deployeres til det korrekte arbejdsområde for det miljø
Dette afsnit dækker opsætningstrin, der er fælles for både Azure DevOps og GitHub Actions, efterfulgt af platformspecifikke konfigurationsinstruktioner.
Opsæt
Før du konfigurerer din CI/CD-platform, skal du gennemføre disse almindelige opsætningstrin:
1. Opret en serviceprincip
Opret en serviceprincipal i Azure AD med bidragyder eller administratorrolle på dine Fabric-arbejdsområder.
2. Tilføj service principal til Fabric-arbejdsområder
- Åbn Fabric-portalen og naviger til hvert målarbejdsområde (udvikler, produktion)
- Gå til Workspace Settings > Administrer adgang
- Tilføj tjenesteprincipalen med rollen som bidragyder eller administrator
Notat
Service principals skal være aktiveret på lejerniveau for at kunne bruge Fabric API'er. For mere information, se Service principals can call Fabric public APIs.
3. Konfigurér grene i dit repository
Opret de branches, du vil bruge til automatisering. For eksemplerne i denne artikel:
- Opret en
devgren til implementering af udviklingsmiljøer - Opret en
maingren til udrulninger af produktionsmiljøer
Du kan tilpasse grennavne og tilføje flere miljøer ved at ændre arbejdsområdemappingerne i YAML-filerne.
Azure DevOps
Automatiser PBIP-udrulninger med Azure Pipelines. Når kode sendes til konfigurerede grene, deployeres pipelinen automatisk til det tilsvarende arbejdsområde.
Opret azure-pipelines.yml roden i dit repository:
trigger:
branches:
include:
- dev
- main
variables:
- name: workspace_ids
value: |
{
"dev": "11111111-1111-1111-1111-111111111111",
"main": "22222222-2222-2222-2222-222222222222"
}
- name: environments
value: |
{
"dev": "dev",
"main": "prod"
}
stages:
- stage: Deploy
jobs:
- job: DeployPBIP
pool:
vmImage: 'windows-latest'
steps:
- checkout: self
- task: UsePythonVersion@0
inputs:
versionSpec: '3.12'
addToPath: true
- task: AzureCLI@2
displayName: 'Deploy PBIP to Fabric'
inputs:
azureSubscription: 'your-azure-service-connection'
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: |
cd "$(Build.SourcesDirectory)"
pip install fabric-cicd
$branch_ref = $env:BUILD_SOURCEBRANCH
$branch_name = $branch_ref -replace '^refs/heads/', ''
$workspace_ids = '$(workspace_ids)' | ConvertFrom-Json
$environments = '$(environments)' | ConvertFrom-Json
$workspace_id = $workspace_ids.$branch_name
$environment = $environments.$branch_name
python -u deploy.py --workspace_id "$workspace_id" --environment "$environment"
if ($LASTEXITCODE -ne 0) {
Write-Error "Deployment failed with exit code: $LASTEXITCODE"
exit $LASTEXITCODE
}
Configure Azure DevOps
-
Opret en Azure service connection i Azure DevOps projektindstillinger:
- Gå til Projektindstillinger > Serviceforbindelser
- Opret en ny Azure Resource Manager-serviceforbindelse ved hjælp af dine service principal-legitimationsoplysninger
- For detaljerede instruktioner, se Connect to Microsoft Azure
- Opdater værdien
azureSubscriptioni YAML, så den matcher dit serviceforbindelsesnavn
-
Opdater workspace-ID'erne i YAML:
- Rediger variablen
workspace_idsi azure-pipelines.yml - Sæt dine dev- og prod workspace-ID'er
- Commit og skub ændringerne til dit repository
- Rediger variablen
-
Skab pipelinen:
- Gå til Pipelines > Ny pipeline
- Vælg dit repository og vælg "Existing Azure Pipelines YAML file"
- Vælg azure-pipelines.yml
- For detaljerede instruktioner, se Opret din første pipeline
- Gem og kør pipelinen for at deploye din PBIP til Fabric
GitHub-handlinger
Automatiser PBIP-udrulninger med GitHub Actions. Når kode sendes til konfigurerede branches, deployeres workflowet automatisk til det tilsvarende arbejdsområde.
Opret .github/workflows/deploy.yml i dit repository:
name: Deploy PBIP to Fabric
on:
push:
branches: [dev, main]
workflow_dispatch:
jobs:
deploy:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Set workspace variables
id: workspace
shell: pwsh
run: |
$branch_name = "${{ github.ref_name }}"
$workspace_ids = @{
"dev" = "11111111-1111-1111-1111-111111111111"
"main" = "22222222-2222-2222-2222-222222222222"
}
$environments = @{
"dev" = "dev"
"main" = "prod"
}
$workspace_id = $workspace_ids[$branch_name]
$environment = $environments[$branch_name]
echo "workspace_id=$workspace_id" >> $env:GITHUB_OUTPUT
echo "environment=$environment" >> $env:GITHUB_OUTPUT
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy PBIP to Fabric
shell: pwsh
run: |
pip install fabric-cicd
python -u deploy.py --workspace_id "${{ steps.workspace.outputs.workspace_id }}" --environment "${{ steps.workspace.outputs.environment }}"
if ($LASTEXITCODE -ne 0) {
Write-Error "Deployment failed with exit code: $LASTEXITCODE"
exit $LASTEXITCODE
}
Konfigurér GitHub-handlinger
Opret Azure credentials secret:
- Få dine servicechef-credentials i JSON-format:
{ "clientId": "<service-principal-client-id>", "clientSecret": "<service-principal-secret>", "subscriptionId": "<azure-subscription-id>", "tenantId": "<azure-tenant-id>" } - Gå til GitHub-repository Indstillinger > Hemmeligheder og variabler Handlinger >
- Tilføj
AZURE_CREDENTIALSmed JSON'en ovenfor
- Få dine servicechef-credentials i JSON-format:
Opdater arbejdsområde-ID'erne i workflowet:
- Rediger
workspace_idshashtabellen i trinnet "Sæt workspace-variable" i.github/workflows/deploy.yml - Sæt dine dev- og prod workspace-ID'er
- Commit og push workflow-YAML til dit repository
- Rediger