Κοινή χρήση μέσω


Αυτοματοποίηση ενοποίησης Git με χρήση API

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

Με τα API REST του Microsoft Fabric, μπορείτε να αυτοματοποιήσετε διαδικασίες Fabric και να ολοκληρώσετε εργασίες ταχύτερα και με λιγότερα σφάλματα. Αυτή η αποδοτικότητα οδηγεί σε εξοικονόμηση κόστους και βελτιωμένη παραγωγικότητα.

Αυτό το άρθρο περιγράφει τον τρόπο χρήσης των API REST ενοποίησης Git για την αυτοματοποίηση της ενοποίησης Git στο Microsoft Fabric.

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

Για να εργαστείτε με τα API Του Fabric Git, χρειάζεστε:

Μπορείτε να χρησιμοποιήσετε τα REST API χωρίς το PowerShell, αλλά οι δέσμες ενεργειών σε αυτό το άρθρο χρησιμοποιούν το PowerShell. Για να εκτελέσετε τις δέσμες ενεργειών, πρέπει να ακολουθήσετε τα παρακάτω βήματα:

Συναρτήσεις API ενοποίησης Git

Τα API REST ενοποίησης Git μπορούν να σας βοηθήσουν να επιτύχετε συνεχή ενοποίηση και συνεχή παράδοση (CI/CD) του περιεχομένου σας. Ακολουθούν μερικά παραδείγματα σχετικά με το τι μπορεί να γίνει χρησιμοποιώντας τα API:

Παραδείγματα

Χρησιμοποιήστε τις ακόλουθες δέσμες ενεργειών PowerShell για να κατανοήσετε τον τρόπο εκτέλεσης πολλών συνήθων διαδικασιών αυτοματισμού. Για να προβάλετε ή να αντιγράψετε το κείμενο σε ένα δείγμα PowerShell, χρησιμοποιήστε τις συνδέσεις σε αυτήν την ενότητα. Μπορείτε επίσης να δείτε όλα τα παραδείγματα στο αποθετήριο δεδομένων ενοποίησης Fabric Git δείγματα GitHub.

Σύνδεση και ενημέρωση

Αυτή η ενότητα περιγράφει τα βήματα που εμπλέκονται στη σύνδεση και την ενημέρωση ενός χώρου εργασίας με το Git.

Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Σύνδεση και ενημέρωση από το Git.

  1. Είσοδος και λήψη διακριτικού πρόσβασης - Πραγματοποιήστε είσοδο στο Fabric ως χρήστης (όχι ως κύρια υπηρεσία). Χρησιμοποιήστε την εντολή Connect-AzAccount για να εισέλθετε. Για να λάβετε ένα διακριτικό πρόσβασης, χρησιμοποιήστε την εντολή Get-AzAccessToken .

    Ο κώδικάς σας θα πρέπει να μοιάζει κάπως έτσι:

    $global:resourceUrl = "https://api.fabric.microsoft.com"
    
    $global:fabricHeaders = @{}
    
    function SetFabricHeaders() {
    
        #Login to Azure
        Connect-AzAccount | Out-Null
    
        # Get authentication
        $fabricToken = (Get-AzAccessToken -ResourceUrl $global:resourceUrl).Token
    
    $global:fabricHeaders = @{
            'Content-Type' = "application/json"
            'Authorization' = "Bearer {0}" -f $fabricToken
        }
    }
    
  2. Καλέστε το API σύνδεσης για να συνδέσετε τον χώρο εργασίας σε ένα αποθετήριο δεδομένων και μια διακλάδωση του Git.

    
    # Connect to Git
    
    Write-Host "Connecting the workspace '$workspaceName' to Git."
    
    $connectUrl = "{0}/workspaces/{1}/git/connect" -f $global:baseUrl, $workspace.Id
    
    # AzureDevOps details
    
    $azureDevOpsDetails = @{
        gitProviderType = "AzureDevOps"
        organizationName = "<ORGANIZATION NAME>"
        projectName = "<PROJECT NAME>"
        repositoryName = "<REPOSITORY NAME>"
        branchName = "<BRANCH NAME>"
        directoryName = "<DIRECTORY NAME>"
    }
    
    $connectToGitBody = @{
        gitProviderDetails =$azureDevOpsDetails
    } | ConvertTo-Json
    
    Invoke-RestMethod -Headers $global:fabricHeaders -Uri $connectUrl -Method POST -Body $connectToGitBody
    
  3. Καλέστε το API Προετοιμασία σύνδεσης για να προετοιμάσετε τη σύνδεση μεταξύ του χώρου εργασίας και του αποθετηρίου δεδομένων/διακλάδωσης Git.

     # Initialize Connection
    
    Write-Host "Initializing Git connection for workspace '$workspaceName'."
    
    $initializeConnectionUrl = "{0}/workspaces/{1}/git/initializeConnection" -f $global:baseUrl, $workspace.Id
    $initializeConnectionResponse = Invoke-RestMethod -Headers $global:fabricHeaders -Uri $initializeConnectionUrl -Method POST -Body "{}"
    
  4. Με βάση την απόκριση από το API Προετοιμασία σύνδεσης, καλέστε είτε την Ενημέρωση από το Git API για να ολοκληρώσετε την ενημέρωση είτε να μην κάνετε τίποτα εάν δεν απαιτείται καμία ενέργεια.

    Η ακόλουθη δέσμη ενεργειών ενημερώνει και παρακολουθεί την πρόοδο:

    if ($initializeConnectionResponse.RequiredAction -eq "UpdateFromGit") {
    
        # Update from Git
        Write-Host "Updating the workspace '$workspaceName' from Git."
    
        $updateFromGitUrl = "{0}/workspaces/{1}/git/updateFromGit" -f $global:baseUrl, $workspace.Id
    
        $updateFromGitBody = @{ 
            remoteCommitHash = $initializeConnectionResponse.RemoteCommitHash
      workspaceHead = $initializeConnectionResponse.WorkspaceHead
        } | ConvertTo-Json
    
        $updateFromGitResponse = Invoke-WebRequest -Headers $global:fabricHeaders -Uri $updateFromGitUrl -Method POST -Body $updateFromGitBody
    
        $operationId = $updateFromGitResponse.Headers['x-ms-operation-id']
        $retryAfter = $updateFromGitResponse.Headers['Retry-After']
        Write-Host "Long Running Operation ID: '$operationId' has been scheduled for updating the workspace '$workspaceName' from Git with a retry-after time of '$retryAfter' seconds." -ForegroundColor Green
    
        # Poll Long Running Operation
        $getOperationState = "{0}/operations/{1}" -f $global:baseUrl, $operationId
        do
        {
            $operationState = Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getOperationState -Method GET
    
            Write-Host "Update from Git operation status: $($operationState.Status)"
    
            if ($operationState.Status -in @("NotStarted", "Running")) {
                Start-Sleep -Seconds $retryAfter
            }
        } while($operationState.Status -in @("NotStarted", "Running"))
    }
    

Ενημέρωση από το Git

Σε αυτή την ενότητα, περιγράφουμε τα βήματα που εμπλέκονται στην ενημέρωση ενός χώρου εργασίας με τις αλλαγές από το Git. Σε αυτή τη δέσμη ενεργειών, ενημερώνουμε τα στοιχεία χώρου εργασίας με αλλαγές από το Git, αλλά αφήνουμε το αποθετήριο δεδομένων Git αμετάβλητο.

Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Ενημέρωση χώρου εργασίας από το Git.

  1. Συνδεθείτε στο Git και λάβετε έλεγχο ταυτότητας.
  2. Καλέστε το API Λήψης κατάστασης για να δημιουργήσετε την ενημέρωση από το σώμα της αίτησης Git.
  3. Καλέστε την Ενημέρωση από το Git API για να ενημερώσετε τον χώρο εργασίας με δεσμεύσεις που προωθούνται στη συνδεδεμένη διακλάδωση.

Δέσμευση όλων

Αυτή η ενότητα παρέχει μια αναλυτική περιγραφή του τρόπου δέσμευσης όλων των αλλαγών μέσω προγραμματισμού από τον χώρο εργασίας στο Git.

Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Δέσμευση όλων των αλλαγών στο Git.

  1. Συνδεθείτε στο Git και λάβετε έλεγχο ταυτότητας.
  2. Σύνδεση στον χώρο εργασίας.
  3. Καλέστε το API REST Δέσμευση στο Git .
  4. Λάβετε το OperationId μεγάλης διάρκειας για ανίχνευση της κατάστασης της λειτουργίας.

Επιλεκτική δέσμευση

Αυτή η ενότητα περιγράφει τα βήματα που εμπλέκονται στη δέσμευση μόνο συγκεκριμένων αλλαγών από τον χώρο εργασίας στο Git.

Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Δέσμευση αλλαγών στο Git.

  1. Συνδεθείτε στο Git και λάβετε έλεγχο ταυτότητας.
  2. Σύνδεση στον χώρο εργασίας.
  3. Καλέστε το API Λήψη κατάστασης για να δείτε ποια στοιχεία έχουν αλλάξει.
  4. Επιλέξτε τα συγκεκριμένα στοιχεία για δέσμευση.
  5. Καλέστε την Δέσμευση στο Git API για να πραγματοποιήσετε τις επιλεγμένες αλλαγές από τον χώρο εργασίας στη συνδεδεμένη απομακρυσμένη διακλάδωση.

Παρακολούθηση της προόδου των λειτουργιών μεγάλης διάρκειας

Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Δημοσκόπηση μιας λειτουργίας μεγάλης διάρκειας.

  1. Ανακτήστε το operationId από την ενημέρωση από το Git ή τη δέσμη ενεργειών Δέσμευση στο Git .
  2. Καλέστε το API Λήψη κατάστασης LRO σε καθορισμένα διαστήματα (σε δευτερόλεπτα) και εκτυπώστε την κατάσταση.

Ζητήματα προς εξέταση και περιορισμοί

  • Η ενοποίηση Git με τη χρήση API υπόκειται στους ίδιους περιορισμούς όπως το περιβάλλον εργασίας χρήστη ενοποίησης Git.
  • Η κύρια υπηρεσία δεν υποστηρίζεται.
  • Η ανανέωση ενός σημασιολογικού μοντέλου με χρήση του API Βελτιωμένης ανανέωσης προκαλεί μια διαφορά Git μετά από κάθε ανανέωση.