Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Το εργαλείο ενοποίησης Microsoft Fabric Git επιτρέπει στις ομάδες να συνεργάζονται χρησιμοποιώντας τον έλεγχο προέλευσης για να δημιουργήσουν μια αποτελεσματική και επαναχρησιμοποιήσιμη διαδικασία κυκλοφορίας για το περιεχόμενό τους Fabric.
Με τα API REST του Microsoft Fabric, μπορείτε να αυτοματοποιήσετε διαδικασίες Fabric και να ολοκληρώσετε εργασίες ταχύτερα και με λιγότερα σφάλματα. Αυτή η αποδοτικότητα οδηγεί σε εξοικονόμηση κόστους και βελτιωμένη παραγωγικότητα.
Αυτό το άρθρο περιγράφει τον τρόπο χρήσης των API REST ενοποίησης Git για την αυτοματοποίηση της ενοποίησης Git στο Microsoft Fabric.
Prerequisites
Για να εργαστείτε με τα API Του Fabric Git, χρειάζεστε:
Οι ίδιες προϋποθέσεις που χρειάζεστε για να χρησιμοποιήσετε την ενοποίηση Git στο περιβάλλον εργασίας χρήστη.
Ένα διακριτικό Microsoft Entra για την υπηρεσία Fabric. Χρησιμοποιήστε αυτό το διακριτικό στην κεφαλίδα εξουσιοδότησης της κλήσης API. Για πληροφορίες σχετικά με τον τρόπο λήψης ενός διακριτικού, ανατρέξτε στο θέμα Γρήγορη εκκίνηση API Fabric.
Εάν χρησιμοποιείτε μια κύρια υπηρεσία, χρειάζεται τα ίδια δικαιώματα με μια κύρια υπηρεσία. Για να ρυθμίσετε μια κύρια υπηρεσία για το Azure DevOps, ανατρέξτε στο θέμα Ενοποίηση Git με κύρια υπηρεσία.
Μπορείτε να χρησιμοποιήσετε τα API REST χωρίς PowerShell, αλλά οι δέσμες ενεργειών σε αυτό το άρθρο χρησιμοποιούν PowerShell. Για να εκτελέσετε τις δέσμες ενεργειών, ακολουθήστε τα παρακάτω βήματα:
- Εγκαταστήστε το PowerShell.
- Εγκαταστήστε τη λειτουργική μονάδα Azure PowerShell Az.
Συναρτήσεις API ενοποίησης Git
Τα API REST ενοποίησης Git μπορούν να σας βοηθήσουν να επιτύχετε συνεχή ενοποίηση και συνεχή παράδοση (CI/CD) του περιεχομένου σας. Ακολουθούν μερικά παραδείγματα σχετικά με το τι μπορεί να γίνει χρησιμοποιώντας τα API:
Συνδέστε και αποσυνδέστε έναν συγκεκριμένο χώρο εργασίας από το αποθετήριο Git και τον κλάδο που είναι συνδεδεμένος σε αυτόν. (Η σύνδεση απαιτεί το connectionId των διαπιστευτηρίων της υπηρεσίας παροχής Git.)
Λάβετε λεπτομέρειες σύνδεσης για τον καθορισμένο χώρο εργασίας.
Λήψη ή δημιουργία σύνδεσης διαπιστευτηρίων υπηρεσίας παροχής Git.
Ενημερώστε τα διαπιστευτήριά μου Git για να ενημερώσετε τις λεπτομέρειες ρύθμισης παραμέτρων διαπιστευτηρίων Git. Απαιτεί το connectionId των διαπιστευτηρίων υπηρεσίας παροχής Git.
Λάβετε τα διαπιστευτήριά μου Git για να λάβετε τις λεπτομέρειες ρύθμισης παραμέτρων διαπιστευτηρίων Git.
Προετοιμάστε μια σύνδεση για έναν χώρο εργασίας που είναι συνδεδεμένος στο Git.
Δείτε ποια στοιχεία έχουν εισερχόμενες αλλαγές και ποια στοιχεία έχουν αλλαγές που δεν έχουν ακόμη δεσμευτεί στο Git με το API κατάστασης Git .
Δεσμεύστε τις αλλαγές που έγιναν στον χώρο εργασίας στον συνδεδεμένο απομακρυσμένο κλάδο.
Ενημερώστε τον χώρο εργασίας με δεσμεύσεις που προωθούνται στον συνδεδεμένο κλάδο.
Examples
Χρησιμοποιήστε τις ακόλουθες δέσμες ενεργειών PowerShell για να κατανοήσετε τον τρόπο εκτέλεσης πολλών συνήθων διαδικασιών αυτοματισμού. Για να προβάλετε ή να αντιγράψετε το κείμενο σε ένα δείγμα PowerShell, χρησιμοποιήστε τις συνδέσεις σε αυτήν την ενότητα. Μπορείτε επίσης να δείτε όλα τα παραδείγματα στο αποθετήριο δεδομένων ενοποίησης Fabric Git δείγματα GitHub.
Σύνδεση και ενημέρωση
Αυτή η ενότητα περιγράφει τα βήματα που εμπλέκονται στη σύνδεση και την ενημέρωση ενός χώρου εργασίας με το Git.
Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Σύνδεση και ενημέρωση από το Git. (Η συμβατότητα δέσμης ενεργειών είναι PowerShell 5.1)
Σύνδεση στον λογαριασμό Azure και λήψη διακριτικού πρόσβασης - Εισέλθετε στο 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 $secureFabricToken = (Get-AzAccessToken -AsSecureString -ResourceUrl $global:resourceUrl).Token # Convert secure string to plain test $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureFabricToken) try { $fabricToken = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr) } finally { [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) } $global:fabricHeaders = @{ 'Content-Type' = "application/json" 'Authorization' = "Bearer {0}" -f $fabricToken } }Καλέστε το API σύνδεσης για να συνδέσετε τον χώρο εργασίας σε ένα αποθετήριο και έναν κλάδο Git. (ίσως χρειαστεί πρώτα να δημιουργήσετε μια σύνδεση )
Για πληροφορίες σχετικά με τον τρόπο απόκτησης των λεπτομερειών σύνδεσης (αναγνωριστικό, όνομα), ανατρέξτε στην ενότητα Λήψη ή δημιουργία σύνδεσης διαπιστευτηρίων υπηρεσίας παροχής Git.
$global:baseUrl = "https://api.fabric.microsoft.com/v1" $workspaceName = "<WORKSPACE NAME>" $getWorkspacesUrl = "{0}/workspaces" -f $global:baseUrl $workspaces = (Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getWorkspacesUrl -Method GET).value # Find the workspace by display name $workspace = $workspaces | Where-Object {$_.DisplayName -eq $workspaceName} # 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 = @{} #Leave only one of the following two (delete the other one): #----------------------------------------------------------------------------------------------- # 1. Automatic (SSO) $connectToGitBody = @{ gitProviderDetails = $gitProviderDetails } | ConvertTo-Json #----------------------------------------------------------------------------------------------- # 2. ConfiguredConnection (User or service principal) # Get workspaces $connectionName = "<CONNECTION Name>" $getConnectionsUrl = "{0}/connections" -f $global:baseUrl $connections = (Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getConnectionsUrl -Method GET).value # Find the connection by display name $connection = $connections | Where-Object {$_.DisplayName -eq $connectionName} $connectToGitBody = @{ gitProviderDetails = $azureDevOpsDetails myGitCredentials = @{ source = "ConfiguredConnection" connectionId = $connection.id } } | ConvertTo-Json #----------------------------------------------------------------------------------------------- Invoke-RestMethod -Headers $global:fabricHeaders -Uri $connectUrl -Method POST -Body $connectToGitBodyΚαλέστε το 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 "{}"Με βάση την απόκριση από το 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.
- Συνδεθείτε στο Git και λάβετε έλεγχο ταυτότητας.
- Καλέστε το API Λήψη κατάστασης για να δημιουργήσετε την ενημέρωση από το σώμα αίτησης Git.
- Καλέστε την Ενημέρωση από το Git API για να ενημερώσετε τον χώρο εργασίας με δεσμεύσεις που προωθούνται στη συνδεδεμένη διακλάδωση.
Δέσμευση όλων
Αυτή η ενότητα παρέχει μια αναλυτική περιγραφή του τρόπου δέσμευσης όλων των αλλαγών μέσω προγραμματισμού από τον χώρο εργασίας στο Git.
Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Δέσμευση όλων των αλλαγών στο Git.
- Συνδεθείτε στο Git και λάβετε έλεγχο ταυτότητας.
- Σύνδεση στον χώρο εργασίας.
- Καλέστε το API REST Δέσμευση στο Git .
- Λάβετε το OperationId μεγάλης διάρκειας για ανίχνευση της κατάστασης της λειτουργίας.
Επιλεκτική δέσμευση
Αυτή η ενότητα περιγράφει τα βήματα που εμπλέκονται στη δέσμευση μόνο συγκεκριμένων αλλαγών από τον χώρο εργασίας στο Git.
Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Δέσμευση αλλαγών στο Git.
- Συνδεθείτε στο Git και λάβετε έλεγχο ταυτότητας.
- Σύνδεση στον χώρο εργασίας.
- Καλέστε το API κατάστασης λήψης για να δείτε ποιος χώρος εργασίας στοιχείων άλλαξε.
- Επιλέξτε τα συγκεκριμένα στοιχεία για δέσμευση.
- Καλέστε την Δέσμευση στο Git API για να πραγματοποιήσετε τις επιλεγμένες αλλαγές από τον χώρο εργασίας στη συνδεδεμένη απομακρυσμένη διακλάδωση.
Παρακολούθηση της προόδου των λειτουργιών μεγάλης διάρκειας
Για την πλήρη δέσμη ενεργειών, ανατρέξτε στο θέμα Δημοσκόπηση μιας λειτουργίας μεγάλης διάρκειας.
- Ανακτήστε το operationId από την ενημέρωση από το Git ή τη δέσμη ενεργειών Δέσμευση στο Git .
- Καλέστε το API Λήψη κατάστασης LRO σε καθορισμένα διαστήματα (σε δευτερόλεπτα) και εκτυπώστε την κατάσταση.
Λήψη ή δημιουργία σύνδεσης διαπιστευτηρίων υπηρεσίας παροχής Git
Για να συνδεθείτε σε ένα αποθετήριο Git ή να ενημερώσετε τα διαπιστευτήριά σας στο Git , πρέπει να δώσετε ένα connectionId. Το connectionId μπορεί να προέρχεται είτε από μια νέα σύνδεση που δημιουργείτε είτε από μια υπάρχουσα σύνδεση.
- Δημιουργία νέας σύνδεσης με τα διαπιστευτήρια της υπηρεσίας παροχής Git
- Χρησιμοποιήστε μια υπάρχουσα σύνδεση για την οποία έχετε δικαιώματα.
Δημιουργήστε μια νέα σύνδεση που αποθηκεύει τα διαπιστευτήριά σας Git
Το παρακάτω τμήμα κώδικα εμφανίζει ένα δείγμα σώματος αίτησης για τη δημιουργία μιας σύνδεσης που αποθηκεύει τα διαπιστευτήριά σας Azure DevOps. Το πλήρες παράδειγμα μπορεί να βρεθεί στο αποθετήριο δειγμάτων Fabric.
# Connection with ServicePrincipal details for AzureDevOpsSourceControl
$adoSPConnection = @{
connectivityType = "ShareableCloud"
displayName = "<CONNECTION NAME>"
connectionDetails = @{
type = "AzureDevOpsSourceControl"
creationMethod = "AzureDevOpsSourceControl.Contents"
parameters = @(
@{
dataType = "Text"
name = "url"
value = "<Repo url in Azure DevOps>"
}
)
}
credentialDetails = @{
credentials = @{
credentialType = "ServicePrincipal"
tenantId = "<SP tenant (directory) id (Guid)>"
servicePrincipalClientId = "<SP APP (client) id (Guid)>"
servicePrincipalSecret = "<SP Secret>"
}
}
}
#Note: AzureDevOps for UserPrincipal is not supported (since it requires interactive OAuth2)
Δείγμα αιτήματος
POST https://api.fabric.microsoft.com/v1/connections
{
"displayName": "<CONNECTION NAME>",
"connectivityType": "ShareableCloud",
"connectionDetails": {
"creationMethod": "AzureDevOpsSourceControl.Contents",
"type": "AzureDevOpsSourceControl",
"parameters": [
{
"dataType": "Text",
"name": "url",
"value": "<Repo url in Azure DevOps>”
}
]
},
"credentialDetails": {
"credentials": {
"credentialType": "ServicePrincipal",
"tenantId": “<SP tenant (directory) id (Guid)>”,
"servicePrincipalClientId": “<SP APP (client) id (Guid)>”,
"servicePrincipalSecret": “<SP Secret>”
}
}
}
Δείγμα απόκρισης:
{
"allowConnectionUsageInGateway": false,
"id": "********-****-****-****-c13b543982ac",
"displayName": "<CONNECTION NAME>",
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "<Repo url in Azure DevOps>",
"type": "AzureDevOpsSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "ServicePrincipal",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
}
Λήψη λίστας υπαρχουσών συνδέσεων
Χρησιμοποιήστε το API συνδέσεων λίστας για να λάβετε μια λίστα με τις υπάρχουσες συνδέσεις για τις οποίες έχετε δικαιώματα και τις ιδιότητές τους.
Δείγμα αίτησης
GET https://api.fabric.microsoft.com/v1/connections
Δείγμα απόκρισης
{
"value": [
{
"id": "e3607d15-6b41-4d11-b8f4-57cdcb19ffc8",
"displayName": "MyGitHubPAT1",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
},
{
"id": "3aba8f7f-d1ba-42b1-bb41-980029d5a1c1",
"displayName": "MyGitHubPAT2",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com/OrganizationName/RepositoryName",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
}
]
}
Αντιγράψτε το αναγνωριστικό της σύνδεσης που θέλετε και χρησιμοποιήστε το στο API Git - Σύνδεση ή Git - Ενημέρωση του API διαπιστευτηρίων μου Git .
Ζητήματα προς εξέταση και περιορισμοί
- Η ενσωμάτωση του Git με χρήση API υπόκειται στους ίδιους περιορισμούς με τη διεπαφή χρήστη ενσωμάτωσης Git.
- Η ανανέωση ενός σημασιολογικού μοντέλου με χρήση του API Βελτιωμένης ανανέωσης προκαλεί μια διαφορά Git μετά από κάθε ανανέωση.
- Σφάλμα: 'Εντοπίστηκαν στοιχεία με λογικά αναγνωριστικά σε διένεξη' - οι χρήστες που εκτελούν το InitializeGitConnection API, ενδέχεται να αντιμετωπίσουν μια κατάσταση όπου εντοπίζεται μια διένεξη μεταξύ λογικών αναγνωριστικών στον χώρο εργασίας και το αποθετήριο git, για να μάθετε περισσότερα σχετικά με αυτήν την κατάσταση, ακολουθήστε τις διενέξεις λογικών αναγνωριστικών στο Microsoft Fabric. Για να επιλύσει αυτό το ζήτημα, ο χρήστης μπορεί είτε να μετονομάσει το όνομα του στοιχείου σε διένεξη είτε να αλλάξει το λογικό αναγνωριστικό στο απομακρυσμένο Git ώστε να ταιριάζει με αυτό στον χώρο εργασίας με βάση τις πληροφορίες που δίνονται στην απόκριση σφάλματος.