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.
Microsoft Fabric Git tümleştirme aracı, ekiplerin, Fabric içeriği için verimli ve yeniden kullanılabilir bir yayın süreci oluşturmak amacıyla kaynak denetimini kullanarak birlikte çalışmalarını sağlar.
Microsoft Fabric REST API'leriyle, görevleri daha hızlı ve daha az hatayla tamamlamak için Doku yordamlarını ve işlemlerini otomatikleştirebilirsiniz. Bu verimlilik, maliyet tasarrufuna ve üretkenliğin artırılmasına yol açar.
Bu makalede, Microsoft Fabric'te Git tümleştirmesini otomatikleştirmek için Git tümleştirme REST API'lerinin nasıl kullanılacağı açıklanmaktadır.
Prerequisites
Doku Git API'leriyle çalışmak için şunları yapmanız gerekir:
Kullanıcı arabiriminde Git tümleştirmesini kullanmanız için gereken önkoşulların aynısı.
Microsoft Entra tokeni için Fabric hizmeti. Bu belirteci API çağrısının yetkilendirme üst bilgisinde kullanın. Token nasıl alınacağı hakkında bilgi için Fabric API hızlı başlangıç belgesine bakın.
Hizmet sorumlusu kullanıyorsanız, kullanıcı sorumlusuyla aynı izinlere sahip olması gerekir. Azure DevOps için hizmet sorumlusu ayarlamak için bkz. Hizmet sorumlusuyla Git tümleştirmesi.
REST API'lerini PowerShell olmadan kullanabilirsiniz, ancak bu makaledeki betikler PowerShell'i kullanır. Betikleri çalıştırmak için aşağıdaki adımları izleyin:
- PowerShell'i yükleyin.
- Azure PowerShell Az modülünü yükleyin.
Git tümleştirme API'si işlevleri
Git tümleştirme REST API'leri, içeriğinizin sürekli tümleştirmesini ve sürekli teslimini (CI/CD) gerçekleştirmenize yardımcı olabilir. API'leri kullanarak neler yapabileceğinize ilişkin birkaç örnek aşağıda verilmiştir:
Belirli bir çalışma alanını Git deposuna ve buna bağlı daldan bağlayın ve bağlantısını kesin. (Connect , Git sağlayıcısı kimlik bilgilerinin connectionId değerini gerektirir.)
Belirtilen çalışma alanının bağlantı ayrıntılarını alın.
Git sağlayıcısı kimlik bilgileri bağlantısını alın veya oluşturun.
Git kimlik bilgileri yapılandırma ayrıntılarınızı güncelleştirmek için Git kimlik bilgilerimi güncelleştirin. Git sağlayıcısı kimlik bilgilerinin connectionId değerini gerektirir.
Git kimlik bilgilerini al ile Git kimlik bilgileri yapılandırma ayrıntılarınızı alın.
Git durum API'siyle hangi öğelerin gelen değişikliklere sahip olduğunu ve hangi öğelerin henüz Git'e işlenmemiş değişiklikleri olduğunu görün.
Çalışma alanında yapılan değişiklikleri bağlı uzak dala işleyin .
Çalışma alanını bağlı dala gönderilen commit'lerle güncelleyin.
Examples
Çeşitli yaygın otomasyon işlemlerinin nasıl gerçekleştirileceklerini anlamak için aşağıdaki PowerShell betiklerini kullanın. PowerShell örneğindeki metni görüntülemek veya kopyalamak için bu bölümdeki bağlantıları kullanın. Fabric Git tümleştirme örnekleri GitHub deposunda tüm örnekleri de görebilirsiniz.
Bağlanma ve güncelleştirme
Bu bölümde, git ile bir çalışma alanını bağlama ve güncelleştirme adımlarını açıklanmaktadır.
Betiğin tamamı için bkz . Git'ten bağlanma ve güncelleştirme. (Betik uyumluluğu PowerShell 5.1'dir)
Azure hesabına bağlanın ve erişim belirteci alın - Doku'da kullanıcı veya hizmet sorumlusu olarak oturum açın. Bağlanmak için Connect-AzAccount komutunu kullanın. Erişim belirteci almak için Get-AzAccessToken komutunu kullanın ve güvenli dize belirtecini düz metne dönüştürün
Kodunuz şuna benzer olmalıdır:
$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 } }Çalışma alanını bir Git deposuna ve dala bağlamak için Connect API'sini çağırın. (önce bir bağlantı oluşturmanız gerekebilir)
Bağlantı ayrıntılarını (Kimlik, Ad) edinme hakkında bilgi için Git sağlayıcısı kimlik bilgileri bağlantısını alma veya oluşturma bölümüne bakın.
$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Çalışma alanı ile Git deposu/dalı arasındaki bağlantıyı başlatmak için Bağlantı Başlatma API'sini çağırın.
# 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 "{}"Bağlantı Başlatma API'sinden gelen yanıta bağlı olarak, güncelleştirmeyi tamamlamak için Git'ten Güncelleştirme API'sini çağırın veya herhangi bir eyleme gerek yoksa hiçbir şey yapma.
Aşağıdaki betik ilerleme durumunu güncelleştirir ve izler:
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'ten güncelleştirme
Bu bölümde, çalışma alanını Git'ten yapılan değişikliklerle güncelleştirme adımlarını açıklayacağız. Bu betikte çalışma alanı öğelerini Git'ten gelen değişikliklerle güncelleştiriyoruz, ancak Git deposunu değiştirmeden bırakıyoruz.
Betiğin tamamı için bkz Git'ten çalışma alanını güncelleştirme.
- Git'de oturum açın ve kimlik doğrulaması alın.
- Git istek gövdesinden güncelleştirmeyi derlemek için Get Status API'sini çağırın.
- Çalışma alanını bağlı dala gönderilen işlemelerle güncelleştirmek için Git'ten Güncelleştirme API'sini çağırın.
Hepsini taahhüt et
Bu bölümde, çalışma alanındaki tüm değişikliklerin Git'e programatik olarak nasıl iletileceğine dair adım adım bir açıklama sunulur.
Betiğin tamamı için bkz . Tüm değişiklikleri Git'e işleme.
- Git'de oturum açın ve kimlik doğrulaması alın.
- Çalışma alanına bağlanın.
- Git'e Commit REST API'sini çağırın.
- İşlemin durumunu sorgulamak için uzun süredir çalışan OperationId değerini alın.
Seçmeli Taahhüt
Bu bölümde, çalışma alanından Git'e yalnızca belirli değişikliklerin işlenmesiyle ilgili adımlar açıklanmaktadır.
Betiğin tamamı için bkz . Git'e seçme değişikliklerini işleme.
- Git'de oturum açın ve kimlik doğrulaması alın.
- Çalışma alanına bağlanın.
- Çalışma alanının hangi öğelerin değiştirildiğini görmek için Get status API'sini çağırın.
- Onaylamak için belirli öğeleri seçin.
- Seçilen değişiklikleri çalışma alanından bağlı uzak dala aktarmak için "Commit to Git" API'sini çağırın.
Uzun süre çalışan işlemlerin ilerleme durumunu izleme
Betiğin tamamı için Uzun Süre Çalışan Bir İşlemi Yoklama'ya bakın.
- Git'ten Güncelleştir veya Git'e Yükle betiğinden operationId değerini alın.
- Belirtilen aralıklarla (saniye) LRO Durum API'sini alma çağrısı yapın ve durumu yazdırın.
Git sağlayıcısı kimlik bilgileri bağlantısını alma veya oluşturma
Git deposuna bağlanmak veya Git kimlik bilgilerinizi güncelleştirmek için bir connectionId sağlamanız gerekir. connectionId, oluşturduğunuz yeni bir bağlantıdan veya mevcut bir bağlantıdan gelebilir.
- Git sağlayıcı kimlik bilgilerinizle yeni bir bağlantı oluşturma
- İzinleriniz olan mevcut bir bağlantıyı kullanın.
Git kimlik bilgilerinizi depolayan yeni bir bağlantı oluşturma
Aşağıdaki kod parçacığı, Azure DevOps kimlik bilgilerinizi depolayan bir bağlantı oluşturmak için örnek istek gövdesini gösterir. Tam örnek Doku örnekleri deposunda bulunabilir.
# 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)
Örnek isteği
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>”
}
}
}
Örnek yanıt:
{
"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
}
}
Mevcut bağlantıların listesini alma
İzinleriniz olan mevcut bağlantıların ve bunların özelliklerinin listesini almak için Bağlantıları listele API'sini kullanın.
Numune isteği
GET https://api.fabric.microsoft.com/v1/connections
Örnek yanıt
{
"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
}
}
]
}
İstediğiniz bağlantının kimliğini kopyalayın ve Git - Bağlan veya Git - Git Kimlik Bilgilerimi Güncelleştir API'sinde kullanın.
Dikkat edilecekler ve sınırlamalar
- API'leri kullanarak Git tümleştirmesi, Git tümleştirme kullanıcı arabirimiyle aynı sınırlamalara tabidir.
- Gelişmiş yenileme API'sini kullanarak bir anlam modelini yenilemek, her yenilemeden sonra Git farkına neden olur.