Piezīmes
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt pierakstīties vai mainīt direktorijus.
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt mainīt direktorijus.
Izmantojiet ConnectToGit un DisconnectFromGit API, lai programmiski integrētu savu Microsoft Dataverse vidi ar Git avota vadīklu. Izmantojot šos API, jūs varat savienot atsevišķus risinājumus vai veselas vides ar atbalstītiem Git repozitorijiem un pārvaldīt šos savienojumus caur kodu.
Priekšnosacījumi
Pirms šo API izmantošanas pārliecinieties, vai jums ir:
- Piekļuve Microsoft Dataverse videi
- Sistēmas administratora atļaujas
- Lasīšanas un rakstīšanas piekļuve Git repozitorijam
ConnectToGit API
Izveido savienojumu starp Dataverse risinājumu vai vidi un Git repozitoriju. Izmantojot šo savienojumu, varat pārvaldīt avota kontroli saviem Dataverse komponentiem.
Parametri
API ConnectToGit akceptē šādus parametrus:
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
GitFolder |
Virkne | Jā | Tās mapes nosaukums, kurai vēlaties piesaistīt risinājumu vai vidi. |
Branch |
Virkne | Jā | Tās filiāles nosaukums, ar kuru vēlaties izveidot savienojumu. |
ConnectionType |
Integer | Nē. | Norāda, ar ko izveidot savienojumu. Skatiet parametru ConnectionType. |
GitProvider |
Integer | Nē. | Git pakalpojumu sniedzējs. Skatiet parametru GitProvider. |
Organization |
Virkne | Nē. | Organizācijas nosaukums, ar kuru vēlaties izveidot savienojumu. |
Project |
Virkne | Nē. | Projekta nosaukums, ar kuru vēlaties izveidot savienojumu. |
Repository |
Virkne | Nē. | Repozitorija nosaukums, ar kuru vēlaties izveidot savienojumu. |
RootFolder |
Virkne | Nē. | Tās saknes mapes nosaukums, kurā visi risinājumi atrodas risinājuma tvērumā. |
SolutionUniqueName |
Virkne | Nē. | Risinājuma unikālais nosaukums, kuru vēlaties izveidot ar git. |
UpstreamBranch |
Virkne | Nē. | Augšupējā filiāle, ar kuru vēlaties izveidot savienojumu, nosaukums. Noklusējums ir repozitorija noklusējuma filiāle. |
GitHubConnectionId |
Virkne | Nē. | Savienojuma ID Power Platform GitHub savienojumam. Nepieciešams, ja GitProvider vien 1 jūs nesniedzat GitHubPAT. To nevar izmantot, ja virtuālā tīkla (VNET) atbalsts ir ieslēgts Dataverse vidē. |
GitHubPAT |
Virkne | Nē. | GitHub personīgais piekļuves tokens ar piekļuvi mērķa repozitorijam. Nepieciešams, ja GitProvider vien 1 jūs nesniedzat GitHubConnectionId. Nepieciešams, kad virtuālā tīkla (VNET) atbalsts ir ieslēgts Dataverse vidē. |
GitHubAppConfigId |
Virkne | Nē. | Atsauce uz GitHub lietotnes konfigurācijas ierakstu. Nepieciešams, kad GitProvider ir 1. Izmantojiet formātu githubappconfigs(<recordId>). |
ConnectionType parametrs
Parametrs ConnectionType kontrolē, vai izveidot savienojumu ar visu Dataverse vidi vai konkrētu risinājumu.
| Vērtība | Etiķete | Apraksts |
|---|---|---|
| 0 | Risinājums | Savieno konkrētu Dataverse risinājumu ar Git. |
| 1 | Vide | Savieno visu Dataverse vidi ar Git. |
GitProvider parametrs
Izmantojiet parametru GitProvider , lai norādītu izmantotā Git nodrošinātāja tipu — Azure DevOps vai GitHub.
| Vērtība | Etiķete | Apraksts |
|---|---|---|
| 0 | Azure DevOps | Izmantojiet repozitorijiem, kas tiek viesoti Azure DevOps |
| 1 | GitHub | Izmantojiet GitHub viesotiem repozitorijiem |
DisconnectFromGit API
Noņem Git savienojumu no Dataverse risinājuma vai vides un atspējo avota kontroles integrāciju.
Parametrs
API DisconnectFromGit ir tikai viens parametrs.
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
SolutionUniqueName |
Virkne | Nē. | Risinājuma unikālais nosaukums, kuru vēlaties atvienot no Git. Izlaist, lai atvienotu visus risinājumus vai vidi. |
Papildinformācija
Tālāk ir norādītas dažas parametru vērtības opcijas, kas jānorāda, izsaucot DisconnectFromGit.
-
Atvienot vienu risinājumu: nodrošiniet
SolutionUniqueNamekonkrēta risinājuma atvienošanu. - Atvienot visus risinājumus: nenorādiet parametrus, lai atvienotu visus risinājuma līmeņa savienojumus.
- Atvienot vidi: nenorādiet parametrus, lai atvienotu vides līmeņa savienojumu.
Piemēri
Tālāk minētie piemēri apraksta scenārijus, kā izmantot un ConnectToGitDisconnectFromGit API:
- Visas Dataverse vides savienošana ar Azure DevOps repozitoriju
- Savienojums ar GitHub repozitoriju
- Savienojieties ar GitHub repozitoriju, izmantojot PowerShell
- Visas Dataverse vides atvienošana no Git avota vadīklas
- Pirmā risinājuma savienošana ar Git repozitoriju
- Papildu risinājumu savienošana ar to pašu Git repozitoriju pēc sākotnējā risinājuma pievienošanas
- Konkrēta risinājuma atvienošana no Git avota vadīklas, vienlaikus saglabājot citu risinājumu savienojumu
Visas Dataverse vides savienošana ar Azure DevOps repozitoriju
Šis savienojums iespējo avota kontroli visām vides līmeņa konfigurācijām un komponentiem.
Neizmantojiet šos parametrus ar šo savienojumu:
RootFolderSolutionUniqueNameUpstreamBranch
Šajā piemērā parādīts, kā izmantot darbību ConnectToGit , lai savienotu visu Dataverse vidi ar Azure DevOps repozitoriju.
Pieprasījums
POST [Organization URI]/api/data/v9.2/ConnectToGit HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"GitFolder": "yourGitfolderName",
"Branch": "yourBranchName",
"ConnectionType": 1,
"GitProvider": 0,
"Organization": "yourOrganizationName",
"Project": "yourProjectName",
"Repository": "yourRepositoryName"
}
Atbilde
HTTP/1.1 204 No Content
OData-Version: 4.0
Savienojums ar GitHub repozitoriju
Pirms izmantojat API, lai pieslēgtos GitHub, izpildiet iestatīšanas soļus, lai izveidotu GitHub lietotni, instalētu to mērķa repozitorijā, importētu tās privāto atslēgu Azure Key Vault un izveidotu Power Platform GitHub savienojumu. Papildu informācijai skatiet sadaļu Savienojums ar GitHub.
Izveidojiet GitHub lietotnes konfigurācijas ierakstu, izmantojot Web API
Izmantojiet Dataverse OData Web API, lai izveidotu ierakstu.githubappconfig Nosūtiet POST pieprasījumu ar GitHub lietotnes klienta ID, Key Vault URI un atslēgas nosaukumu.
Jūs varat izmantot jebkuru HTTP klientu, piemēram, Insomnia, Visual Studio Code REST Client vai curl, lai veiktu šos izsaukumus. Autentifikācijai nepieciešams nesēja žetons. Papildu informācijai skatiet Use the Microsoft Dataverse Web API.
POST {{DataverseOrgUrl}}/api/data/v9.2/githubappconfigs
Authorization: Bearer {{token}}
Content-Type: application/json
{
"githubappid": "Iv23liBWoH9sf7xDrRe6",
"keyvaulturi": "{{KeyVaultUri}}",
"keyname": "demoGitHubKey"
}
Svarīgi
Pievērsiet uzmanību ieraksta ID, kas tika atgriezts atbildes galvenē. Šī vērtība ir nepieciešama, lai identificētu pārvaldīto identitāti, konfigurētu RBAC un izsauktu ConnectToGit. Ieraksta ID tiek izmantots formāts, piemēram, 13d565bb-4c22-f111-a546-7ced8d6e3e85.
Pēc GitHub lietotnes konfigurācijas ieraksta izveides piešķiriet Key Vault Crypto User lomu Dataverse pārvaldītajai identitātei, kā aprakstīts Configure Key Vault lomas bāzētajā piekļuves kontrolē (RBAC).
Izsauciet ConnectToGit API
Pēc ieraksta izveides githubappconfig un Key Vault RBAC konfigurēšanas izmantojiet Dataverse Web API, lai izveidotu avota kontroles savienojumu, izsaucot darbībuConnectToGit.
POST {{DataverseOrgUrl}}/api/data/v9.2/ConnectToGit
Authorization: Bearer {{token}}
Content-Type: application/json
{
"GitProvider": 1,
"ConnectionType": 1,
"Organization": "YourGitHubOrg",
"Repository": "YourRepo",
"Project": "placeholder",
"Branch": "yourBranch",
"UpstreamBranch": "main",
"GitFolder": "YourFolder",
"GitHubConnectionId": "<connectionId>",
"GitHubAppConfigId": "githubappconfigs(<recordId>)"
}
Svarīgi
Zars jau noteikti atrodas krātuvē. Ja nepieciešams, vispirms izveido to GitHub. Vērtībai GitHubAppConfigId jāizmanto formāts githubappconfigs(<recordId>).
Ja saņemat veiksmīgu atbildi, vide tiek savienota ar GitHub.
Savienojieties ar GitHub repozitoriju, izmantojot PowerShell
Nākamais PowerShell piemērs izveido GitHub lietotnes konfigurācijas ierakstu, gaida, kad Dataverse pārvaldītā identitāte parādīsies Microsoft Entra ID, piešķir pārvaldītajai identitātei Key Vault Crypto User lomu un izsauc ConnectToGit darbību. Ja jums jau ir GitHub lietotnes konfigurācijas ieraksts, piedāvājiet GitHubAppConfigId izlaist konfigurācijas un Key Vault lomas piešķiršanas soļus.
Instalējiet un importējiet Az.Accounts, Az.KeyVault, un Az.Resources PowerShell moduļus pirms piemēra palaišanas. Piesakieties, Connect-AzAccount izmantojot kontu, kuram ir piekļuve Dataverse videi un atļauja piešķirt Key Vault lomas.
Ja virtuālā tīkla (VNET) atbalsts ir ieslēgts Dataverse vidē, nodrošināt GitHubPAT. GitHub savienojumus nevar izmantot ar virtuālā tīkla atbalstu.
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$DataverseOrgUrl,
[Parameter(Mandatory)]
[string]$GitHubOrg,
[Parameter(Mandatory)]
[string]$GitHubRepo,
[Parameter(Mandatory)]
[string]$Branch,
[Parameter(Mandatory)]
[string]$GitFolder,
[string]$GitHubAppClientId,
[string]$KeyVaultName,
[string]$KeyVaultKeyName,
[string]$GitHubAppConfigId,
[string]$GitHubConnectionId,
[string]$GitHubPAT,
[ValidateSet(0, 1)]
[int]$ConnectionType = 1,
[string]$UpstreamBranch,
[string]$RootFolder,
[string]$SolutionUniqueName
)
Set-StrictMode -Version 3.0
$ErrorActionPreference = "Stop"
if (($GitHubConnectionId -and $GitHubPAT) -or (-not $GitHubConnectionId -and -not $GitHubPAT)) {
throw "Specify either -GitHubConnectionId or -GitHubPAT, but not both."
}
if (-not $GitHubAppConfigId) {
foreach ($name in @('GitHubAppClientId', 'KeyVaultName', 'KeyVaultKeyName')) {
if ([string]::IsNullOrWhiteSpace((Get-Variable -Name $name -ValueOnly))) {
throw "Specify -$name when -GitHubAppConfigId is not provided."
}
}
}
$dataverseResource = $DataverseOrgUrl.TrimEnd('/')
$tokenResult = Get-AzAccessToken -ResourceUrl $dataverseResource -AsSecureString
$dataverseToken = [System.Net.NetworkCredential]::new('', $tokenResult.Token).Password
function Invoke-DataverseApi {
param(
[Parameter(Mandatory)]
[string]$Method,
[Parameter(Mandatory)]
[string]$Endpoint,
[object]$Body,
[switch]$ReturnHeaders
)
$headers = @{
Authorization = "Bearer $dataverseToken"
"OData-MaxVersion" = "4.0"
"OData-Version" = "4.0"
}
$request = @{
Method = $Method
Uri = "$dataverseResource/api/data/v9.2/$Endpoint"
Headers = $headers
ContentType = "application/json; charset=utf-8"
}
if ($Body) {
$request.Body = $Body | ConvertTo-Json -Depth 10
}
if ($ReturnHeaders) {
return (Invoke-WebRequest @request).Headers
}
Invoke-RestMethod @request
}
$appConfigRecordId = $GitHubAppConfigId
if (-not $appConfigRecordId) {
$keyVault = Get-AzKeyVault -VaultName $KeyVaultName
$keyVaultUri = 'https://' + $KeyVaultName + '.vault.azure.net/'
$appConfigBody = @{
githubappid = $GitHubAppClientId
keyvaulturi = $keyVaultUri
keyname = $KeyVaultKeyName
}
$responseHeaders = Invoke-DataverseApi `
-Method POST `
-Endpoint "githubappconfigs" `
-Body $appConfigBody `
-ReturnHeaders
$entityIdHeader = [string]$responseHeaders["OData-EntityId"]
if ($entityIdHeader -notmatch '\(([0-9a-f-]+)\)') {
throw "Could not read the GitHub App configuration record ID from the Dataverse response."
}
$appConfigRecordId = $Matches[1]
$managedIdentityName = "PPMI-githubappconfigmanagedidentity-$appConfigRecordId"
$servicePrincipal = $null
for ($attempt = 1; $attempt -le 60; $attempt++) {
$servicePrincipal = Get-AzADServicePrincipal -DisplayName $managedIdentityName -ErrorAction SilentlyContinue
if ($servicePrincipal) {
break
}
Start-Sleep -Seconds 1
}
if (-not $servicePrincipal) {
throw "The Dataverse managed identity was not found in Microsoft Entra ID. Check Dataverse System Jobs for GitHub App configuration errors."
}
$keyVaultScope = $keyVault.ResourceId
if (-not $keyVaultScope) {
$subscriptionId = (Get-AzContext).Subscription.Id
$keyVaultScope = "/subscriptions/$subscriptionId/resourceGroups/$($keyVault.ResourceGroupName)/providers/Microsoft.KeyVault/vaults/$KeyVaultName"
}
$keyVaultCryptoUserRoleId = "12338af0-0e69-4776-bea7-57ae8d297424"
$existingAssignment = Get-AzRoleAssignment `
-ObjectId $servicePrincipal.Id `
-RoleDefinitionId $keyVaultCryptoUserRoleId `
-Scope $keyVaultScope `
-ErrorAction SilentlyContinue
if (-not $existingAssignment) {
New-AzRoleAssignment `
-ObjectId $servicePrincipal.Id `
-RoleDefinitionId $keyVaultCryptoUserRoleId `
-Scope $keyVaultScope | Out-Null
}
}
$connectBody = @{
GitProvider = 1
ConnectionType = $ConnectionType
Organization = $GitHubOrg
Repository = $GitHubRepo
Project = "placeholder"
Branch = $Branch
GitFolder = $GitFolder
GitHubAppConfigId = "githubappconfigs($appConfigRecordId)"
}
if ($GitHubConnectionId) { $connectBody.GitHubConnectionId = $GitHubConnectionId }
if ($GitHubPAT) { $connectBody.GitHubPAT = $GitHubPAT }
if ($UpstreamBranch) { $connectBody.UpstreamBranch = $UpstreamBranch }
if ($RootFolder) { $connectBody.RootFolder = $RootFolder }
if ($SolutionUniqueName) { $connectBody.SolutionUniqueName = $SolutionUniqueName }
Invoke-DataverseApi -Method POST -Endpoint "ConnectToGit" -Body $connectBody
Write-Host "Connected Dataverse Git integration to GitHub."
Visas Dataverse vides atvienošana no Git avota vadīklas
Šī darbība noņem vides līmeņa Git savienojumu. Šai operācijai neizmantojiet parametru SolutionUniqueName . Dataverse automātiski identificē un noņem vides līmeņa Git savienojumu.
Šajā piemērā parādīts, kā izmantot darbību DisconnectFromGit , lai atvienotu visu Dataverse vidi no Git avota vadīklas.
Pieprasījums
POST [Organization URI]/api/data/v9.2/DisconnectFromGit HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Atbilde
HTTP/1.1 204 No Content
OData-Version: 4.0
Pirmā risinājuma savienošana ar Git repozitoriju
Šis savienojums izveido repozitorija saiti un mapju struktūru risinājuma līmeņa avota vadībai uz pirmo risinājumu vidē.
Lai norādītu risinājumu, ir jāiekļauj šo parametru vērtības:
RootFolderSolutionUniqueName
Šajā piemērā ir parādīts, kā izmantot darbību ConnectToGit , lai savienotu pirmo risinājumu ar Git repozitoriju.
Pieprasījums
POST [Organization URI]/api/data/v9.2/ConnectToGit HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"GitFolder": "yourGitfolderName",
"Branch": "yourBranchName",
"ConnectionType": 1,
"GitProvider": 0,
"Organization": "yourOrganizationName",
"Project": "yourProjectName",
"Repository": "yourRepositoryName",
"RootFolder": "yourRootFolderName",
"SolutionUniqueName": "yourSolutionUniqueName"
}
Atbilde
HTTP/1.1 204 No Content
OData-Version: 4.0
Papildu risinājumu savienošana ar to pašu Git repozitoriju pēc sākotnējā risinājuma pievienošanas
Pēc pirmā risinājuma pievienošanas ir nepieciešami tikai risinājumam specifiskie parametri. Repozitorija savienojuma detaļas tiek mantotas no sākotnējā savienojuma.
Iestatiet tikai šos parametrus:
SolutionUniqueNameBranchGitFolder
Svarīgi
Vispirms ir jāpievieno pirmais risinājums, pirms tas darbojas. Skatiet sadaļu Pirmā risinājuma savienošana ar Git repozitoriju.
Šajā piemērā ir parādīts, kā izmantot darbību ConnectToGit , lai savienotu turpmākos risinājumus ar Git repozitoriju.
Pieprasījums
POST [Organization URI]/api/data/v9.2/ConnectToGit HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"GitFolder": "yourGitfolderName",
"Branch": "yourBranchName",
"SolutionUniqueName": "yourSolutionUniqueName"
}
Atbilde
HTTP/1.1 204 No Content
OData-Version: 4.0
Konkrēta risinājuma atvienošana no Git avota vadīklas, vienlaikus saglabājot citu risinājumu savienojumu
Izmantojiet šo pieeju, lai noņemtu avota kontroli vienam risinājumam, neietekmējot citus.
Šajā piemērā ir parādīts, kā izmantot darbību DisconnectFromGit , lai noņemtu avota kontroli vienam risinājumam, neietekmējot citus.
Pieprasījums
POST [Organization URI]/api/data/v9.2/DisconnectFromGit HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"SolutionUniqueName": "yourSolutionUniqueName"
}
Atbilde
HTTP/1.1 204 No Content
OData-Version: 4.0
Kļūdu apstrāde
Ne the , ConnectToGit ne API DisconnectFromGit neatgriež vērtību, kad tā ir veiksmīgi pabeigta. Ja API neizdodas, tas atgriež kļūdu.
Bieži sastopamie kļūdu scenāriji ir šādi:
- Nederīgi akreditācijas dati: pārliecinieties, vai jums ir derīga autentifikācija Git pakalpojumu sniedzējam.
- Repozitorijs nav atrasts: pārbaudiet organizācijas, projekta un repozitoriju nosaukumus.
- Atļauja liegta: pārliecinieties, vai jūsu Dataverse kontam ir avota kontroles pārvaldības atļaujas.
-
Risinājums nav atrasts: pārbaudiet, vai
SolutionUniqueNametas pastāv jūsu vidē. - Filiāle nepastāv: apstipriniet, ka norādītā filiāle pastāv repozitorijā.
Atbalsts un papildu resursi
Papildinformāciju par avota vadības integrāciju ar Dataverse skatiet šeit: