Κοινοποίηση μέσω


Ανάπτυξη έργων Power BI (PBIP) με χρήση fabric-cicd

Σημαντικό

Τα έργα του Power BI Desktop βρίσκονται αυτήν τη στιγμή σε προεπισκόπηση.

Το fabric-cicd είναι μια βιβλιοθήκη Python που αναπτύχθηκε από τη Microsoft και παρέχει μια μέθοδο πρώτου κώδικα για τους προγραμματιστές Fabric για την ανάπτυξη στοιχείων Fabric από τον έλεγχο προέλευσης σε χώρους εργασίας χρησιμοποιώντας τη μορφή ορισμού κώδικα, όπως σημασιολογικά μοντέλα και αναφορές χρησιμοποιώντας τη μορφή αρχείου PBIP.

Σε αυτό το άρθρο, θα μάθετε πώς μπορείτε να κάνετε τα εξής:

  • Αναπτύξτε αρχεία PBIP με μη αυτόματο τρόπο από τον τοπικό υπολογιστή σας
  • Παραμετροποίηση αρχείων PBIP για διαμορφώσεις για συγκεκριμένο περιβάλλον
  • Αυτοματοποιήστε τις αναπτύξεις με στόχευση χώρου εργασίας που βασίζεται σε διακλάδωση χρησιμοποιώντας Azure DevOps ή GitHub Actions

Μάθετε περισσότερα σχετικά με τη μορφή PBIP σε έργα Power BI Desktop (PBIP) και την επισκόπηση ενοποίησης Fabric Git.

Γιατί fabric-cicd για ανάπτυξη PBIP;

Το fabric-cicd έχει σχεδιαστεί ειδικά για την ανάπτυξη τεχνουργημάτων υφάσματος ελεγχόμενης πηγής και προσφέρει πολλά πλεονεκτήματα:

  • Χρησιμοποιεί εγγενή API REST Fabric - Βασίζεται σε επίσημα API Microsoft Fabric, διασφαλίζοντας συμβατότητα και μακροπρόθεσμη υποστήριξη
  • Python-native - Απρόσκοπτη ενσωμάτωση με σύγχρονες ροές εργασίας DevOps που βασίζονται σε Python
  • Παραμετροποίηση: Ενσωματωμένη υποστήριξη για διαμορφώσεις για συγκεκριμένο περιβάλλον (αναγνωριστικά χώρου εργασίας, προελεύσεις δεδομένων, συμβολοσειρές σύνδεσης)
  • Φιλικό προς τους προγραμματιστές: Απλά σενάρια Python που μπορούν να εκτελεστούν τοπικά ή σε αγωγούς CI/CD
  • Ευέλικτος έλεγχος ανάπτυξης: Αναπτύξτε μόνο συγκεκριμένους τύπους στοιχείων (π.χ. σημασιολογικά μοντέλα χωρίς αναφορές ή σημασιολογικά μοντέλα με ή χωρίς κρυφή μνήμη δεδομένων) και εξασφαλίστε συνεπείς διαμορφώσεις, όπως προεπιλεγμένες σελίδες ή παραμέτρους χωρίς μη αυτόματη παρέμβαση
  • Εκκαθάριση ορφανών: Καταργεί αυτόματα στοιχεία από τον χώρο εργασίας που δεν υπάρχουν πλέον στον έλεγχο προέλευσης
  • Αξιόπιστος έλεγχος ταυτότητας: Χρησιμοποιεί το Azure Identity SDK με πολλές επιλογές ελέγχου ταυτότητας

Σημείωση

Για πλήρη τεκμηρίωση, ανατρέξτε στην τεκμηρίωση του fabric-cicd.

Προαπαιτούμενα στοιχεία

Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε:

  • Python (έκδοση 3.9 έως 3.12)
  • Ένα έργο Power BI Desktop αποθηκευμένο σε μορφή PBIP
  • Πρόσβαση σε χώρο εργασίας Microsoft Fabric με ρόλο συμβαλλόντων

Για αυτοματοποιημένες αναπτύξεις, χρειάζεστε επίσης:

  • Μια κύρια υπηρεσία με τουλάχιστον τον ρόλο συμβαλλόντων σε χώρους εργασίας Fabric προορισμού
  • Πρόσβαση σε ενέργειες Azure DevOps ή GitHub
  • Τα αρχεία PBIP στο στοιχείο ελέγχου προέλευσης (Git, Azure DevOps ή GitHub)

Γρήγορη εκκίνηση

Αυτή η γρήγορη εκκίνηση σάς δείχνει πώς μπορείτε να αναπτύξετε ένα έργο PBIP από τον τοπικό υπολογιστή σας σε έναν χώρο εργασίας Fabric.

1. Εγκαταστήστε το fabric-cicd

Ανοίξτε το τερματικό σας και εγκαταστήστε το fabric-cicd:

pip install fabric-cicd

2. Προετοιμάστε το έργο σας PBIP

Βεβαιωθείτε ότι το έργο σας PBIP περιλαμβάνει τα απαιτούμενα αρχεία. Μια τυπική δομή έργου PBIP:

my-powerbi-project/
├── SalesAnalytics.Report/
│   ├── definition.pbir
│   └── definition/
│       └── pages/
├── SalesAnalytics.SemanticModel/
│   ├── definition.pbism
│   └── definition/
│       ├── model.tmdl
│       ├── tables/
│       └── ...
└── SalesAnalytics.pbip

Για λεπτομερείς πληροφορίες σχετικά με τα απαιτούμενα αρχεία και μορφές, ανατρέξτε στο θέμα Φάκελος αναφοράς έργου Power BI Desktop και Φάκελος σημασιολογικού μοντέλου έργου Power BI Desktop.

Συμβουλή

Για να δημιουργήσετε ένα έργο PBIP, ανοίξτε το αρχείο PBIX στο Power BI Desktop και αποθηκεύστε το χρησιμοποιώντας την επιλογή Αποθήκευση αρχείου > ως > έργο Power BI (.pbip). Ανατρέξτε στο θέμα Έργα Power BI Desktop για περισσότερες λεπτομέρειες.

3. Δημιουργήστε σενάριο ανάπτυξης

Δημιουργήστε ένα deploy.py αρχείο στον κατάλογο του έργου σας:

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. Ανάπτυξη

Εκτελέστε τη δέσμη ενεργειών ανάπτυξης με το αναγνωριστικό του χώρου εργασίας σας:

python deploy.py --workspace_id "11111111-1111-1111-1111-111111111111"

Το πρόγραμμα περιήγησής σας ανοίγει για έλεγχο ταυτότητας. Μετά την είσοδο, το fabric-cicd αναπτύσσει τα αρχεία PBIP στον χώρο εργασίας προορισμού. Βλέπετε μηνύματα προόδου όπως:

[info] Publishing SemanticModel 'SalesAnalytics'
       Operation in progress. Checking again in 1 second (Attempt 1)...
       Published

[info] Publishing Report 'SalesAnalytics'
       Published

Η ανάπτυξη διαρκεί συνήθως 20-30 δευτερόλεπτα, ανάλογα με το μέγεθος του μοντέλου σημασιολογίας σας.

Σημείωση

Την πρώτη φορά που αναπτύσσετε ένα μοντέλο σημασιολογίας με προελεύσεις δεδομένων, πρέπει να ρυθμίσετε με μη αυτόματο τρόπο τα διαπιστευτήρια προέλευσης δεδομένων στην πύλη Fabric. Μεταβείτε στις Ρυθμίσεις > σημασιολογικού μοντέλου > χώρου εργασίας > Διαπιστευτήρια προέλευσης δεδομένων. Οι επόμενες αναπτύξεις επαναχρησιμοποιούν τα αποθηκευμένα διαπιστευτήρια.

Παραμετροποίηση για συγκεκριμένο περιβάλλον

Ένα από τα πιο ισχυρά χαρακτηριστικά του fabric-cicd είναι η δυνατότητα παραμετροποίησης των αρχείων PBIP για διαφορετικά περιβάλλοντα. Αυτό είναι απαραίτητο όταν τα σημασιολογικά μοντέλα σας αναφέρονται σε πόρους που αφορούν συγκεκριμένο περιβάλλον, όπως αναγνωριστικά χώρου εργασίας, αναγνωριστικά lakehouse ή συμβολοσειρές σύνδεσης.

Παράδειγμα: Παραμετροποίηση αναγνωριστικών χώρου εργασίας και lakehouse

Δημιουργήστε ένα parameter.yml αρχείο στη ρίζα του έργου σας για να ορίσετε τιμές για συγκεκριμένο περιβάλλον:

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αυτόματα το , fabric-cicd:

  1. Διαβάζει το αρχείο parameter.yml
  2. Βρίσκει όλες τις εμφανίσεις στα find_value αρχεία ορισμού PBIP
  3. Τα αντικαθιστά με τα αντίστοιχα ειδικά για το περιβάλλον replace_value
  4. Αναπτύσσει τους τροποποιημένους ορισμούς στον χώρο εργασίας προορισμού

Αυτοματοποιήστε την ανάπτυξη

Μπορείτε να αυτοματοποιήσετε τις αναπτύξεις PBIP ώστε να εκτελούνται κάθε φορά που ο κώδικας συγχωνεύεται σε συγκεκριμένους κλάδους στο αποθετήριο σας. Ο αυτοματισμός ακολουθεί αυτή τη λογική:

  1. Μια διοχέτευση ή μια ροή εργασίας ενεργοποιείται όταν ο κώδικας ωθείται σε μια διαμορφωμένη διακλάδωση (π.χ. dev ή main)
  2. Το όνομα της διακλάδωσης καθορίζει το περιβάλλον προορισμού και το αναγνωριστικό χώρου εργασίας
  3. Το σενάριο ανάπτυξης εκτελείται αυτόματα με τις κατάλληλες παραμέτρους
  4. Τα τεχνουργήματα PBIP αναπτύσσονται στον σωστό χώρο εργασίας για αυτό το περιβάλλον

Αυτή η ενότητα καλύπτει τα βήματα ρύθμισης που είναι κοινά τόσο για το Azure DevOps όσο και για τις ενέργειες GitHub, ακολουθούμενα από οδηγίες ρύθμισης παραμέτρων για συγκεκριμένη πλατφόρμα.

Ρύθμιση

Πριν διαμορφώσετε την πλατφόρμα CI/CD, ολοκληρώστε αυτά τα κοινά βήματα εγκατάστασης:

1. Δημιουργήστε μια κύρια υπηρεσία

Δημιουργήστε μια κύρια υπηρεσία στο Azure AD με ρόλο Συμβάλλοντα ή Διαχειριστή στους χώρους εργασίας Fabric.

2. Προσθήκη κύριας υπηρεσίας σε χώρους εργασίας Fabric

  1. Ανοίξτε την πύλη Fabric και μεταβείτε σε κάθε χώρο εργασίας προορισμού (dev, prod)
  2. Μεταβείτε στις Ρυθμίσεις > χώρου εργασίας Διαχείριση πρόσβασης
  3. Προσθήκη της κύριας υπηρεσίας με ρόλο συμβαλλόντων ή διαχειριστή

Σημείωση

Οι κύριες υπηρεσίες πρέπει να είναι ενεργοποιημένες σε επίπεδο μισθωτή για τη χρήση API Fabric. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Οι αρχές υπηρεσίας μπορούν να καλούν δημόσια API Fabric.

3. Διαμορφώστε κλάδους στο αποθετήριο σας

Δημιουργήστε τους κλάδους που θα χρησιμοποιήσετε για αυτοματοποίηση. Για τα παραδείγματα σε αυτό το άρθρο:

  1. dev Δημιουργία διακλάδωσης για αναπτύξεις περιβάλλοντος ανάπτυξης
  2. main Δημιουργία διακλάδωσης για αναπτύξεις περιβάλλοντος παραγωγής

Μπορείτε να προσαρμόσετε τα ονόματα των κλάδων και να προσθέσετε περισσότερα περιβάλλοντα τροποποιώντας τις αντιστοιχίσεις χώρων εργασίας στα αρχεία YAML.

Azure DevOps

Αυτοματοποιήστε τις αναπτύξεις PBIP με διοχετεύσεις Azure. Όταν ο κώδικας προωθείται σε διαμορφωμένους κλάδους, η διοχέτευση αναπτύσσεται αυτόματα στον αντίστοιχο χώρο εργασίας.

Δημιουργήστε azure-pipelines.yml στη ρίζα του αποθετηρίου σας:

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

  1. Δημιουργήστε μια σύνδεση υπηρεσίας Azure στις ρυθμίσεις έργου Azure DevOps:
    • Μετάβαση στις Ρυθμίσεις > έργου Συνδέσεις υπηρεσίας
    • Δημιουργία νέας σύνδεσης υπηρεσίας Azure Resource Manager χρησιμοποιώντας τα διαπιστευτήρια της κύριας υπηρεσίας σας
    • Για λεπτομερείς οδηγίες, ανατρέξτε στο θέμα Σύνδεση στο Microsoft Azure
    • Ενημερώστε την azureSubscription τιμή στο YAML ώστε να ταιριάζει με το όνομα της σύνδεσης υπηρεσίας σας
  2. Ενημερώστε τα αναγνωριστικά χώρου εργασίας στο YAML:
    • Επεξεργαστείτε τη workspace_ids μεταβλητή στο azure-pipelines.yml
    • Ορίστε τα αναγνωριστικά χώρου εργασίας προγραμματιστή και προϊόντος
    • Δεσμεύστε και προωθήστε τις αλλαγές στο αποθετήριο σας
  3. Δημιουργήστε τη διοχέτευση:
    • Μετάβαση στο Pipelines > Νέος αγωγός
    • Επιλέξτε το αποθετήριο σας και επιλέξτε "Υπάρχον αρχείο YAML αγωγών Azure"
    • Επιλέξτε azure-pipelines.yml
    • Για λεπτομερείς οδηγίες, ανατρέξτε στο θέμα Δημιουργία της πρώτης διοχέτευσης
    • Αποθηκεύστε και εκτελέστε τη διοχέτευση για να αναπτύξετε το PBIP σας στο Fabric

GitHub Actions

Αυτοματοποιήστε τις αναπτύξεις PBIP με τις ενέργειες GitHub. Όταν ο κώδικας προωθείται σε διαμορφωμένους κλάδους, η ροή εργασίας αναπτύσσεται αυτόματα στον αντίστοιχο χώρο εργασίας.

Δημιουργήστε .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

  1. Δημιουργήστε τον μυστικό κωδικό διαπιστευτηρίων Azure:

    • Λάβετε τα διαπιστευτήρια της κύριας υπηρεσίας σας σε μορφή JSON:
      {
        "clientId": "<service-principal-client-id>",
        "clientSecret": "<service-principal-secret>",
        "subscriptionId": "<azure-subscription-id>",
        "tenantId": "<azure-tenant-id>"
      }
      
    • Μεταβείτε στο αποθετήριο GitHub Ρυθμίσεις > Μυστικοί κωδικοί και μεταβλητές > Ενέργειες
    • Προσθέστε AZURE_CREDENTIALS με το JSON παραπάνω
  2. Ενημερώστε τα αναγνωριστικά χώρου εργασίας στη ροή εργασίας:

    • Επεξεργαστείτε τον workspace_ids πίνακα κατακερματισμού στο βήμα "Ορισμός μεταβλητών χώρου εργασίας" στο .github/workflows/deploy.yml
    • Ορίστε τα αναγνωριστικά χώρου εργασίας προγραμματιστή και προϊόντος
    • Δεσμεύστε και προωθήστε τη ροή εργασίας YAML στο αποθετήριο σας