Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Power BI Desktop projeleri şu anda önizleme aşamasındadır.
fabric-cicd , Microsoft tarafından geliştirilen ve Doku geliştiricilerine, PBIP dosya biçimini kullanan anlamsal modeller ve raporlar gibi kod tanım biçimlerini kullanarak Doku öğelerini kaynak denetimden çalışma alanlarına dağıtmak için kod öncelikli bir yöntem sağlayan bir Python kitaplığıdır.
Bu makalede şunları öğreneceksiniz:
- PBIP dosyalarını yerel makinenizden el ile dağıtma
- Ortama özgü yapılandırmalar için PBIP dosyalarını parametreleştirme
- Azure DevOps veya GitHub Actions kullanarak dal tabanlı çalışma alanı hedeflemesi ile dağıtımları otomatikleştirme
Power BI Desktop projelerinde PBIP biçimi hakkında ve Fabric Git tümleştirmeye genel bakış hakkında daha fazla bilgi edinin.
PBIP dağıtımı için neden fabric-cicd?
fabric-cicd, kaynak kontrolünde Fabric bileşenlerini dağıtmak için özel olarak tasarlandı ve çeşitli avantajlar sunar:
- Fabric yerel REST API'lerini kullanır - Uyumluluğu ve uzun vadeli desteği sağlamak için resmi Microsoft Fabric API'leri üzerine kurulmuştur
- Python'a özel - Modern Python tabanlı DevOps iş akışlarıyla sorunsuz tümleştirme
- Parametreleştirme: Ortama özgü yapılandırmalar (çalışma alanı kimlikleri, veri kaynakları, bağlantı dizeleri) için yerleşik destek
- Geliştirici dostu: Yerel olarak veya CI/CD işlem hatlarında çalışabilen basit Python betikleri
- Esnek dağıtım denetimi: Yalnızca belirli öğe türlerini (örneğin, rapor içermeyen anlamsal modeller veya veri önbelleği olan veya olmayan anlamsal modeller) dağıtın ve el ile müdahale olmadan varsayılan sayfalar veya parametreler gibi tutarlı yapılandırmalar sağlayın
- Yetim temizleme: Artık kaynak denetiminde bulunmayan öğeleri çalışma alanından otomatik olarak kaldırır
- Güvenilir kimlik doğrulaması: Birden çok kimlik doğrulama seçeneğiyle Azure Kimlik SDK'sı kullanır
Uyarı
Tam belgeler için fabric-cicd belgelerine bakın.
Önkoşullar
Başlamadan önce şunların olduğundan emin olun:
- Python (sürüm 3.9 - 3.12)
- PBIP biçiminde kaydedilmiş bir Power BI Desktop projesi
- Katılımcı rolüne sahip bir Microsoft Fabric çalışma alanına erişim
Otomatik dağıtımlar için şunları da yapmanız gerekir:
- Hedef Doku çalışma alanlarında en az Katkıda Bulunan rolüne sahip bir hizmet sorumlusu
- Azure DevOps veya GitHub Actions'a erişim
- Kaynak denetimindeki PBIP dosyalarınız (Git, Azure DevOps veya GitHub)
Hızlı başlangıç
Bu hızlı başlangıç, yerel makinenizden bir Fabric çalışma alanına PBIP projesi dağıtımının nasıl yapılacağını gösterir.
1. Fabric-cicd yükleme
Terminalinizi açın ve fabric-cicd'i yükleyin:
pip install fabric-cicd
2. PBIP projenizi hazırlama
PBIP projenizin gerekli dosyaları içerdiğinden emin olun. Tipik bir PBIP proje yapısı:
my-powerbi-project/
├── SalesAnalytics.Report/
│ ├── definition.pbir
│ └── definition/
│ └── pages/
├── SalesAnalytics.SemanticModel/
│ ├── definition.pbism
│ └── definition/
│ ├── model.tmdl
│ ├── tables/
│ └── ...
└── SalesAnalytics.pbip
Gerekli dosyalar ve biçimler hakkında ayrıntılı bilgi için bkz. Power BI Desktop proje raporu klasörü ve Power BI Desktop proje anlam modeli klasörü.
Tip
PBIP projesi oluşturmak için PBIX dosyanızı Power BI Desktop'ta açın ve Dosya > Farklı Kaydet > Power BI Projesi (.pbip) kullanarak kaydedin. Diğer ayrıntılar için bkz. Power BI Desktop projeleri .
3. Dağıtım betiği oluşturun
Proje dizininizde bir deploy.py dosya oluşturun:
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. Dağıtım
Dağıtım betiğini çalışma alanı kimliğiniz ile çalıştırın:
python deploy.py --workspace_id "11111111-1111-1111-1111-111111111111"
Tarayıcınız kimlik doğrulaması için açılır. Fabric-cicd, oturum açtıktan sonra PBIP dosyalarınızı hedef çalışma alanına dağıtır. Aşağıdaki gibi ilerleme iletileri görürsünüz:
[info] Publishing SemanticModel 'SalesAnalytics'
Operation in progress. Checking again in 1 second (Attempt 1)...
Published
[info] Publishing Report 'SalesAnalytics'
Published
Dağıtım genellikle anlam modelinizin boyutuna bağlı olarak 20-30 saniye sürer.
Uyarı
Veri kaynaklarıyla semantik modeli ilk kez dağıttığınızda, Doku portalında veri kaynağı kimlik bilgilerini el ile yapılandırmanız gerekir. Çalışma alanı > anlam modeli > Ayarları > Veri kaynağı kimlik bilgileri'ne gidin. Sonraki dağıtımlarda kaydedilen kimlik bilgileri yeniden kullanılır.
Ortama özgü parametreleştirme
Fabric-cicd'in en güçlü özelliklerinden biri, PBIP dosyalarınızı farklı ortamlar için parametreleştirebilme özelliğidir. Anlam modelleriniz çalışma alanı kimlikleri, lakehouse kimlikleri veya bağlantı dizeleri gibi ortama özgü kaynaklara başvurduğunda bu önemlidir.
Örnek: Çalışma alanı ve lakehouse kimliklerini parametreleştirme
Ortama özgü değerleri tanımlamak için proje kökünde bir parameter.yml dosya oluşturun:
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
python deploy.py --workspace_id "11111111-1111-1111-1111-111111111111" --environment dev çalıştırdığınızda, fabric-cicd otomatik olarak:
- parameter.yml dosyasını okur
- PBIP tanım dosyalarınızda
find_value'nin tüm yerlerini bulur - Bunları ilgili ortama özgü değerle değiştirir
replace_value - Değiştirilen tanımları hedef çalışma alanına dağıtır
Dağıtımı otomatikleştirme
PbIP dağıtımlarını, kod deponuzdaki belirli dallarla birleştirildiğinde çalışacak şekilde otomatikleştirebilirsiniz. Otomasyon şu mantığı izler:
- İşlem hattı veya iş akışı, kod yapılandırılmış bir dala gönderildiğinde tetikleniyor (örneğin,
devveyamain) - Dal adı hedef ortamı ve çalışma alanı kimliğini belirler
- Dağıtım betiği uygun parametrelerle otomatik olarak çalışır
- PBIP yapıtlarınız bu ortam için doğru çalışma alanına dağıtılır
Bu bölüm hem Azure DevOps hem de GitHub Actions için ortak olan kurulum adımlarını ve ardından platforma özgü yapılandırma yönergelerini kapsar.
Kurulum
CI/CD platformunuzu yapılandırmadan önce şu yaygın kurulum adımlarını tamamlayın:
1. Hizmet sorumlusu oluşturma
Azure AD'de, Fabric çalışma alanlarınızda Katkıda Bulunucu veya Yönetici rolüyle bir hizmet sorumlusu nesnesi oluşturun.
2. Fabric çalışma alanlarına hizmet ilkesi ekleme
- Açık Fabric portalını açın ve her hedef çalışma alanına (geliştirme, üretim) gidin.
- Çalışma Alanı Ayarları > Erişimi yönet'e gidin
- Hizmet sorumlusunu Katkıda Bulunan veya Yönetici rolüyle ekleme
Uyarı
Doku API'lerini kullanmak için hizmet sorumlularının kiracı düzeyinde etkinleştirilmesi gerekir. Daha fazla bilgi için bkz. Hizmet sorumluları Doku genel API'lerini çağırabilir.
3. Deponuzda dalları yapılandırma
Otomasyon için kullanacağınız dalları oluşturun. Bu makaledeki örnekler için:
- Geliştirme ortamı dağıtımları için bir dal
devoluşturun - Üretim ortamı dağıtımları için bir
maindalı oluştur.
YAML dosyalarındaki çalışma alanı eşlemelerini değiştirerek dal adlarını özelleştirebilir ve daha fazla ortam ekleyebilirsiniz.
Azure DevOps
Azure Pipelines ile PBIP dağıtımlarını otomatikleştirme. Kod yapılandırılan dallara gönderildiğinde işlem hattı otomatik olarak ilgili çalışma alanına dağıtılır.
Depo kökünüzde azure-pipelines.yml oluşturun.
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
}
Azure DevOps'yi yapılandırma
- Azure DevOps proje ayarlarında Azure hizmet bağlantısı oluşturma:
- Proje Ayarları > Hizmet bağlantıları'na gidin
- Hizmet sorumlusu kimlik bilgilerinizi kullanarak yeni bir Azure Resource Manager hizmet bağlantısı oluşturma
- Ayrıntılı yönergeler için bkz. Microsoft Azure'a bağlanma
-
azureSubscriptionYAML'deki değeri hizmet bağlantınızın adıyla eşleşecek şekilde güncelleştirin
-
YAML'de çalışma alanı kimliklerini güncelleştirin:
- azure-pipelines.yml değişkenini
workspace_idsdüzenleme - Geliştirme ve üretim çalışma alanı kimliklerinizi ayarlayın
- Değişiklikleri işleme ve deponuza gönderme
- azure-pipelines.yml değişkenini
-
İşlem hattını oluşturun:
- İşlem Hatları > Yeni işlem hattı'na gidin
- Deponuzu seçin ve "Mevcut Azure Pipelines YAML dosyası" seçeneğini belirleyin
- azure-pipelines.yml seçin
- Ayrıntılı yönergeler için bkz. İlk işlem hattınızı oluşturma
- PBIP'nizi Fabric'e dağıtmak için pipeline'i kaydedin ve çalıştırın.
GitHub İşlemleri
GitHub Actions ile PBIP dağıtımlarını otomatikleştirin. Kod yapılandırılan dallara gönderildiğinde, iş akışı otomatik olarak ilgili çalışma alanına dağıtılır.
Deponuzda oluşturun .github/workflows/deploy.yml :
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
}
GitHub Actions'ı yapılandırma
Azure kimlik bilgileri gizlisini oluşturun:
- Hizmet sorumlusu kimlik bilgilerinizi JSON biçiminde alın:
{ "clientId": "<service-principal-client-id>", "clientSecret": "<service-principal-secret>", "subscriptionId": "<azure-subscription-id>", "tenantId": "<azure-tenant-id>" } - GitHub deposu Ayarları > Gizli Diziler ve Değişkenler > altında Eylemler'e gidin
- Yukarıdaki JSON ile ekleyin
AZURE_CREDENTIALS
- Hizmet sorumlusu kimlik bilgilerinizi JSON biçiminde alın:
İş akışındaki çalışma alanı kimliklerini güncelleştirin:
-
workspace_ids"Çalışma alanı değişkenlerini ayarla" adımında karma tablo düzenleme.github/workflows/deploy.yml - Geliştirme ve üretim çalışma alanı kimliklerinizi ayarlayın
- İş akışı YAML'sini işleme ve deponuza gönderme
-