Märkus.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida sisse logida või kausta vahetada.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida kausta vahetada.
Kasuta ConnectToGit ja DisconnectFromGit API-sid, et programmiliselt integreerida oma Microsoft Dataverse'i keskkond Git lähtekoodihaldusega. Nende API-de abil saate ühendada üksikuid lahendusi või terveid keskkondi toetatud Giti hoidlatega ja hallata neid ühendusi koodi kaudu.
Eeltingimused
Enne nende API-de kasutamist veendu, et sul on:
- Juurdepääs Microsoft Dataverse'i keskkonnale
- Süsteemiadministraatori õigused
- Lugemis- ja kirjutamisligipääs Git-repositooriumile
ConnectToGit API
Loob ühenduse Dataverse'i lahenduse või keskkonna ja Git-hoidla vahel. Selle ühenduse abil saad hallata oma Dataverse'i komponentide lähtekoodihaldust.
Parameetrid
API ConnectToGit aktsepteerib järgmisi parameetreid:
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
GitFolder |
String | Jah | Kausta nimi, kuhu soovid oma lahenduse või keskkonna siduda. |
Branch |
String | Jah | Haru nimi, millega soovid ühenduda. |
ConnectionType |
Täisarv | Nr | Määrab, millega ühenduda. Vaata ConnectionType parameetrit. |
GitProvider |
Täisarv | Nr | Git-teenuse pakkuja. Vaata GitProvider parameetrit. |
Organization |
String | Nr | Organisatsiooni nimi, kellega soovid ühendust võtta. |
Project |
String | Nr | Projekti nimi, millega soovid ühenduda. |
Repository |
String | Nr | Andmehoidla nimi, millega soovid ühenduda. |
RootFolder |
String | Nr | Juurkausta nimi, kus kõik sinu lahendused lahenduste ulatuses asuvad. |
SolutionUniqueName |
String | Nr | Lahenduse ainulaadne nimi, millega soovid ühendada. |
UpstreamBranch |
String | Nr | Ülemharu nimi, millega soovid ühenduda. Vaikimisi on hoidla vaikimisi haru. |
GitHubConnectionId |
String | Nr | Power Platformi GitHub ühenduse ID. Nõutav, kui GitProvider te 1 ei sisesta GitHubPAT. Ei saa kasutada, kui Dataverse'i keskkonnas on lubatud virtuaalvõrgu (VNET) tugi. |
GitHubPAT |
String | Nr | GitHub isiklikku pääsutõendi, millel on juurdepääs sihthoidlale. Nõutav, kui GitProvider te 1 ei sisesta GitHubConnectionId. Nõutav, kui Dataverse'i keskkonnas on lubatud virtuaalvõrgu (VNET) tugi. |
GitHubAppConfigId |
String | Nr | Viide GitHub rakenduse konfiguratsioonikirjele. Vajalik, kui GitProvider on 1. Kasuta formaati githubappconfigs(<recordId>). |
ConnectionType parameeter
Parameeter ConnectionType määrab, kas ühendada kogu Dataverse'i keskkonnaga või konkreetse lahendusega.
| Väärtus | Silt | Kirjeldus |
|---|---|---|
| 0 | Lahendus | Ühendab konkreetse Dataverse'i lahenduse Gitiga. |
| 1 | Keskkond | Ühendab kogu Dataverse'i keskkonna Gitiga. |
GitProvider parameeter
Kasuta parameetrit GitProvider , et määrata, millist Git-teenuse pakkujat kasutad, kas Azure DevOps või GitHub.
| Väärtus | Silt | Kirjeldus |
|---|---|---|
| 0 | Azure DevOps | Kasuta Azure DevOps majutatavate hoidlate jaoks |
| 1 | GitHub | Kasutus GitHubis majutatud repositooriumitele |
DisconnectFromGit API
Eemaldab Git-ühenduse Dataverse'i lahendusest või keskkonnast ning keelab lähtekoodihalduse integratsiooni.
Parameeter
API-l DisconnectFromGit on ainult üks parameeter.
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
SolutionUniqueName |
String | Nr | Lahenduse unikaalne nimi, mida soovid Gitist lahti ühendada. Ära katkesta kõigi lahenduste või keskkonna katkestamist. |
Lisateave
Siin on mõned parameetri väärtuse valikud, mida määrata kutsumisel DisconnectFromGit.
-
Ühenda lahti üks lahendus: Paku
SolutionUniqueNamekonkreetse lahenduse lahtiühendamist. - Katkesta kõik lahendused: Ära anna parameetreid kõigi lahendustaseme ühenduste lahtiühendamiseks.
- Ühenduse katkestamise keskkond: Ei paku parameetreid keskkonnataseme ühenduse katkestamiseks.
Näited
Järgmistes näidetes kirjeldatakse API-de kasutamise DisconnectFromGit stsenaariumeConnectToGit.
- Ühenda kogu oma Dataverse'i keskkond Azure DevOps repositooriumiga
- ühenduse loomine GitHub hoidlaga
- GitHub hoidlaga ühenduse loomine PowerShelli abil
- Katkesta kogu oma Dataverse'i keskkond Git lähtekoodihaldusest
- Ühenda esimene lahendus Git-repositooriumiga
- Ühenda lisalahendused samasse Giti hoidla pärast esialgse lahenduse ühendamist
- Ühenda konkreetne lahendus Giti lähtehaldusest, hoides samal ajal teisi lahendusi ühendatuna
Ühenda kogu oma Dataverse'i keskkond Azure DevOps repositooriumiga
See ühendus võimaldab lähtekoodihaldust kõigi keskkonnataseme konfiguratsioonide ja komponentide jaoks.
Ära kasuta neid parameetreid selle seosega:
RootFolderSolutionUniqueNameUpstreamBranch
See näide näitab, kuidas kasutada ConnectToGit tegevust , et ühendada kogu oma Dataverse'i keskkond Azure DevOps hoidlaga.
Taotlus
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"
}
Vastus
HTTP/1.1 204 No Content
OData-Version: 4.0
ühenduse loomine GitHub hoidlaga
Enne kui kasutate API-t GitHub ühenduse loomiseks, täitke GitHub rakenduse loomiseks häälestustoimingud, installige see sihthoidlasse, importige privaatvõti Azure Key Vault ja looge Power Platformi GitHub ühendus. Lisateavet leiate teemast Ühenduse loomine GitHub.
GitHub rakenduse konfiguratsioonikirje loomine veebi-API abil
Kirje loomiseks kasutage Dataverse OData veebi API-t githubappconfig . Saatke POST-taotlus GitHub rakenduse kliendi ID, Key Vault URI ja võtme nimega.
Nende kõnede tegemiseks saate kasutada mis tahes HTTP-klienti (nt Insomnia, Visual Studio Code REST Client või curl). Autentimiseks vajate kandjatõendi. Lisateavet leiate teemast Microsoft Dataverse veebi API kasutamine.
POST {{DataverseOrgUrl}}/api/data/v9.2/githubappconfigs
Authorization: Bearer {{token}}
Content-Type: application/json
{
"githubappid": "Iv23liBWoH9sf7xDrRe6",
"keyvaulturi": "{{KeyVaultUri}}",
"keyname": "demoGitHubKey"
}
Oluline
Pange tähele, et vastuse päises tagastatud kirje ID. Seda väärtust on vaja hallatava identiteedi tuvastamiseks, RBAC-i konfigureerimiseks ja helistamiseks ConnectToGit. Kirje ID kasutab sellist vormingut nagu 13d565bb-4c22-f111-a546-7ced8d6e3e85.
Pärast GitHub rakenduse konfiguratsioonikirje loomist määrake Key Vault Crypto User roll Dataverse'i hallatavale identiteedile, nagu on kirjeldatud artiklis Key Vault rollipõhise juurdepääsu reguleerimise konfigureerimine (RBAC).
ConnectToGiti API kutsumine
Pärast kirje loomist githubappconfig ja Key Vault RBAC-i konfigureerimist kasutage toimingu kutsumisega ConnectToGit lähtekontrolli ühenduse loomiseks Dataverse Web API-t.
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>)"
}
Oluline
Haru peab hoidlas juba olemas olema. Vajaduse korral looge see esmalt GitHub. Väärtus GitHubAppConfigId peab kasutama vormingut githubappconfigs(<recordId>).
Kui saate vastuse, on keskkond ühendatud GitHub.
GitHub hoidlaga ühenduse loomine PowerShelli abil
Järgmises PowerShelli näites luuakse GitHub rakenduse konfiguratsioonikirje, oodatakse Andmeverse'i hallatava identiteedi kuvamist Microsoft Entra ID, määratakse hallatavale identiteedile Key Vault krüptokasutaja roll ja kutsutakse ConnectToGit toiming. Kui teil on juba GitHub rakenduse konfiguratsioonikirje, jätke GitHubAppConfigId konfigureerimine vahele ja Key Vault rollimääramise juhised.
Installige ja importige Az.Accountsmoodulid , Az.KeyVaultja Az.Resources PowerShell enne näite käivitamist. Logige sisse kontogaConnect-AzAccount, millel on juurdepääs Dataverse'i keskkonnale ja õigus määrata Key Vault rolle.
Kui Dataverse'i keskkonnas on lubatud virtuaalvõrgu (VNET) tugi, andke .GitHubPAT GitHub ühendusi ei saa kasutada virtuaalvõrgu toega.
[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."
Katkesta kogu oma Dataverse'i keskkond Git lähtekoodihaldusest
See tegevus eemaldab keskkonnataseme Git-ühenduse. Ära kasuta seda SolutionUniqueName parameetrit selle operatsiooni jaoks. Dataverse tuvastab ja eemaldab automaatselt keskkonnataseme Git-ühenduse.
See näide näitab, kuidas kasutada DisconnectFromGit tegevust , et katkestada kogu oma Dataverse'i keskkond Git lähtekoodihaldusest.
Taotlus
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
Vastus
HTTP/1.1 204 No Content
OData-Version: 4.0
Ühenda esimene lahendus Git-repositooriumiga
See ühendus loob hoidla lingi ja kaustastruktuuri lahendustaseme lähtekoodihalduse jaoks esimese lahenduseni keskkonnas.
Lahenduse määramiseks tuleb lisada nende parameetrite väärtused:
RootFolderSolutionUniqueName
See näide näitab, kuidas kasutada ConnectToGit tegevust , et ühendada esimene lahendus Giti hoidlaga.
Taotlus
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"
}
Vastus
HTTP/1.1 204 No Content
OData-Version: 4.0
Ühenda lisalahendused samasse Giti hoidla pärast esialgse lahenduse ühendamist
Pärast esimese lahenduse ühendamist on vaja ainult lahendusspetsiifilisi parameetreid. Sa pärid hoidla ühenduse andmed algsest ühendusest.
Sea ainult need parameetrid:
SolutionUniqueNameBranchGitFolder
Oluline
Enne kui see töötab, pead esmalt ühendama esimese lahenduse. Vaata Ühenda esimene lahendus Giti hoidlaga.
See näide näitab, kuidas kasutada ConnectToGit tegevust , et ühendada järgmised lahendused Git-hoidlaga.
Taotlus
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"
}
Vastus
HTTP/1.1 204 No Content
OData-Version: 4.0
Ühenda konkreetne lahendus Giti lähtehaldusest, hoides samal ajal teisi lahendusi ühendatuna
Kasuta seda lähenemist, et eemaldada ühe lahenduse lähtekoodikontroll ilma teisi mõjutamata.
See näide näitab, kuidas kasutada DisconnectFromGit tegevust , et eemaldada ühe lahenduse lähtekood ilma teisi mõjutamata.
Taotlus
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"
}
Vastus
HTTP/1.1 204 No Content
OData-Version: 4.0
Tõrketöötlus
Ei API ConnectToGit ega DisconnectFromGit API tagasta väärtust, kui see edukalt lõpetatakse. Kui API ebaõnnestub, tagastab see vea.
Levinumad vea stsenaariumid on:
- Kehtetud mandaadiandmed: Veendu, et sul on Giti teenusepakkujale kehtiv autentimine.
- Hoidla ei leitud: Kontrolli organisatsiooni, projekti ja hoidla nimed.
- Luba keelatud: Veenduge, et teie Dataverse'i kontol on lähtekoodihalduse õigused.
-
Lahendus ei leitud: Kontrolli, et need
SolutionUniqueNameeksisteerivad sinu keskkonnas. - Haru ei eksisteeri: Kinnita, et määratud haru eksisteerib hoidlas.
Toetus ja täiendavad ressursid
Lisateabe saamiseks lähtekoodihalduse integratsiooni kohta Dataverse'iga vaata: