Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
ConnectToGit Bruk API-ene og DisconnectFromGit API-ene til å integrere Microsoft Dataverse-miljøet programmatisk med Git-kildekontrollen. Ved å bruke disse API-ene kan du koble individuelle løsninger eller hele miljøer til støttede Git-repositorier og administrere disse tilkoblingene gjennom kode.
Forutsetninger
Før du bruker disse API-ene, må du kontrollere at du har:
- Tilgang til et Microsoft Dataverse-miljø
- Systemansvarligs tillatelser
- Lese og skrive tilgang til et Git-repositorium
ConnectToGit API
Oppretter en tilkobling mellom en datavers løsning eller et miljø og et Git-repositorium. Ved hjelp av denne tilkoblingen kan du administrere kildekontroll for dataverskomponentene.
Parametere
ConnectToGit API-en godtar følgende parametere:
| Parameter | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
GitFolder |
Streng | Ja | Navnet på mappen du vil binde løsningen eller miljøet til. |
Branch |
Streng | Ja | Navnet på grenen du vil koble til. |
ConnectionType |
Integer | Nei | Angir hva du skal koble til. Se ConnectionType-parameteren. |
GitProvider |
Integer | Nei | Git-leverandøren. Se GitProvider-parameteren. |
Organization |
Streng | Nei | Navnet på organisasjonen du vil koble til. |
Project |
Streng | Nei | Navnet på prosjektet du vil koble til. |
Repository |
Streng | Nei | Navnet på repositoriet du vil koble til. |
RootFolder |
Streng | Nei | Navnet på rotmappen der alle løsningene ligger i løsningsomfanget. |
SolutionUniqueName |
Streng | Nei | Det unike navnet på løsningen du vil koble til git. |
UpstreamBranch |
Streng | Nei | Navnet på oppstrømsgreningen du vil koble til. Angis til standardgrenen for repositorium. |
GitHubConnectionId |
Streng | Nei | Tilkoblings-ID for Power Platform GitHub tilkobling. Obligatorisk når GitProvider er 1 med mindre du oppgir GitHubPAT. Kan ikke brukes når støtte for virtuelt nettverk (VNET) er aktivert for dataversmiljøet. |
GitHubPAT |
Streng | Nei | GitHub personlig tilgangstoken med tilgang til målrepositoriet. Obligatorisk når GitProvider er 1 med mindre du oppgir GitHubConnectionId. Obligatorisk når støtte for virtuelt nettverk (VNET) er aktivert for dataversmiljøet. |
GitHubAppConfigId |
Streng | Nei | Referanse til GitHub appkonfigurasjonsoppføring. Obligatorisk når GitProvider er 1. Bruk formatet githubappconfigs(<recordId>). |
ConnectionType-parameter
Parameteren ConnectionType kontrollerer om du vil koble til hele dataversmiljøet eller en bestemt løsning.
| Verdi | Etikett | Beskrivelse |
|---|---|---|
| 0 | Løsning | Kobler en bestemt dataversløsning til Git. |
| 1 | Miljø | Kobler hele dataversmiljøet til Git. |
GitProvider-parameter
Bruk parameteren GitProvider til å angi hvilken type Git-leverandør du bruker, enten Azure DevOps eller GitHub.
| Verdi | Etikett | Beskrivelse |
|---|---|---|
| 0 | Azure DevOps | Bruk for repositorier som driftes på Azure DevOps |
| 1 | GitHub | Bruk for repositorier som driftes på GitHub |
DisconnectFromGit API
Fjerner Git-tilkoblingen fra en datavers løsning eller et miljø, og deaktiverer kildekontrollintegrering.
Parameter
DisconnectFromGit API-en har bare én parameter.
| Parameter | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
SolutionUniqueName |
Streng | Nei | Det unike navnet på løsningen du vil koble fra Git. Utelate å koble fra alle løsninger eller miljøet. |
Tilleggsinformasjon
Her er noen alternativer for parameterverdi du kan angi når du aktiverer DisconnectFromGit.
-
Koble fra én enkelt løsning: Angi
SolutionUniqueNameat du skal koble fra en bestemt løsning. - Koble fra alle løsninger: Gir ingen parametere for å koble fra alle tilkoblinger på løsningsnivå.
- Frakoblingsmiljø: Gir ingen parametere for å koble fra tilkoblingen på miljønivå.
Eksempler
Eksemplene nedenfor beskriver scenarioer for bruk av ConnectToGit API-er og DisconnectFromGit API-er:
- Koble hele dataversmiljøet til et Azure DevOps-repositorium
- Koble til et GitHub repositorium
- Koble til et GitHub-repositorium ved hjelp av PowerShell
- Koble fra hele datavers-miljøet ditt fra Git-kildekontroll
- Koble den første løsningen til et Git-repositorium
- Koble ekstra løsninger til samme Git-repositorium etter at du har koblet til den opprinnelige løsningen
- Koble fra en bestemt løsning fra Git-kildekontrollen samtidig som andre løsninger er tilkoblet
Koble hele dataversmiljøet til et Azure DevOps-repositorium
Denne tilkoblingen aktiverer kildekontroll for alle konfigurasjoner og komponenter på miljønivå.
Ikke bruk disse parameterne med denne tilkoblingen:
RootFolderSolutionUniqueNameUpstreamBranch
Dette eksemplet viser hvordan du bruker Handlingen ConnectToGit til å koble hele dataversmiljøet til et Azure DevOps-repositorium.
Forespørsel
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"
}
Svar
HTTP/1.1 204 No Content
OData-Version: 4.0
Koble til et GitHub repositorium
Før du bruker API-en til å koble til GitHub, må du fullføre konfigurasjonstrinnene for å opprette GitHub-appen, installere den på målrepositoriet, importere den private nøkkelen til Azure Key Vault og opprette Power Platform GitHub-tilkoblingen. Hvis du vil ha mer informasjon, kan du se Koble til GitHub.
Opprette en GitHub App-konfigurasjonspost ved hjelp av web-API-en
Bruk Dataverse OData Web API til å opprette en githubappconfig-post. Send en POST-forespørsel med GitHub appklient-ID, Key Vault URI og nøkkelnavn.
Du kan bruke hvilken som helst HTTP-klient, for eksempel Insomnia, Visual Studio Code REST Client eller curl, til å foreta disse samtalene. Du trenger et bærertoken for godkjenning. Hvis du vil ha mer informasjon, kan du se Bruke Microsoft Dataverse Web API.
POST {{DataverseOrgUrl}}/api/data/v9.2/githubappconfigs
Authorization: Bearer {{token}}
Content-Type: application/json
{
"githubappid": "Iv23liBWoH9sf7xDrRe6",
"keyvaulturi": "{{KeyVaultUri}}",
"keyname": "demoGitHubKey"
}
Viktig!
Legg merke til post-ID-en som returneres i svaroverskriften. Du trenger denne verdien for å identifisere den administrerte identiteten, konfigurere RBAC og ringe ConnectToGit. Oppførings-ID-en bruker et format slik som 13d565bb-4c22-f111-a546-7ced8d6e3e85.
Når du har opprettet GitHub appkonfigurasjonsoppføringen, tilordner du rollen Key Vault crypto-bruker til den dataverseadministrerte identiteten som beskrevet i Konfigurer Key Vault rollebasert tilgangskontroll (RBAC).
Kall ConnectToGit-API-en
Når du har opprettet githubappconfig posten og konfigurert Key Vault RBAC, bruker du Dataverse Web API-en til å opprette kildekontrolltilkoblingen ConnectToGit ved å kalle handlingen.
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>)"
}
Viktig!
Grenen må allerede finnes i repositoriet. Opprett det i GitHub først om nødvendig. Verdien GitHubAppConfigId må bruke formatet githubappconfigs(<recordId>).
Hvis du får et vellykket svar, er miljøet koblet til GitHub.
Koble til et GitHub-repositorium ved hjelp av PowerShell
Det følgende PowerShell-eksemplet oppretter GitHub appkonfigurasjonsoppføringen, venter på at den dataverseadministrerte identiteten vises i Microsoft Entra ID, tilordner rollen Key Vault Crypto-bruker til den administrerte identiteten og kaller ConnectToGit handlingen. Hvis du allerede har en konfigurasjonsoppføring for GitHub App, oppgir du GitHubAppConfigId for å hoppe over konfigurasjonen og trinnene for rolletilordning i Key Vault.
Installer og importer modulene Az.Accounts, Az.KeyVaultog Az.Resources PowerShell før du kjører eksemplet. Logg på med Connect-AzAccount en konto som har tilgang til dataversmiljøet og tillatelse til å tilordne Key Vault roller.
Hvis støtte for virtuelt nettverk (VNET) er aktivert for dataversmiljøet, kan du angi GitHubPAT. GitHub tilkoblinger kan ikke brukes med støtte for virtuelt nettverk.
[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."
Koble fra hele Dataverse-miljøet fra Git-versjonskontroll
Denne handlingen fjerner git-tilkoblingen på miljønivå. Ikke bruk parameteren SolutionUniqueName for denne operasjonen. Datavers identifiserer og fjerner automatisk Git-tilkoblingen på miljønivå.
Dette eksemplet viser hvordan du bruker handlingen DisconnectFromGit til å koble hele dataversmiljøet fra Git-kildekontrollen.
Forespørsel
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
Svar
HTTP/1.1 204 No Content
OData-Version: 4.0
Koble den første løsningen til et Git-repositorium
Denne tilkoblingen etablerer repositoriumkoblingen og mappestrukturen for kildekontroll på løsningsnivå til den første løsningen i et miljø.
Du må inkludere verdier for disse parameterne for å angi løsningen:
RootFolderSolutionUniqueName
Dette eksemplet viser hvordan du bruker handlingen ConnectToGit til å koble den første løsningen til et Git-repositorium.
Forespørsel
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"
}
Svar
HTTP/1.1 204 No Content
OData-Version: 4.0
Koble ekstra løsninger til samme Git-repositorium etter at du har koblet til den opprinnelige løsningen
Når du har koblet til den første løsningen, trenger du bare de løsningsspesifikke parameterne. Du arver tilkoblingsdetaljene for repositoriet fra den første tilkoblingen.
Angi bare disse parameterne:
SolutionUniqueNameBranchGitFolder
Viktig!
Du må først koble til den første løsningen før dette fungerer. Se Koble den første løsningen til et Git-repositorium.
Dette eksemplet viser hvordan du bruker handlingen ConnectToGit til å koble etterfølgende løsninger til et Git-repositorium.
Forespørsel
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"
}
Svar
HTTP/1.1 204 No Content
OData-Version: 4.0
Koble fra en bestemt løsning fra Git-kildekontrollen samtidig som andre løsninger er tilkoblet
Bruk denne fremgangsmåten til å fjerne kildekontroll for én løsning uten å påvirke andre.
Dette eksemplet viser hvordan du bruker handlingen DisconnectFromGit til å fjerne kildekontroll for én løsning uten å påvirke andre.
Forespørsel
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"
}
Svar
HTTP/1.1 204 No Content
OData-Version: 4.0
Feilbehandling
Verken ConnectToGit eller DisconnectFromGit API-en returnerer en verdi når de er fullført. Når en API mislykkes, returnerer den en feil.
Vanlige feilscenarioer inkluderer:
- Ugyldig legitimasjon: Kontroller at du har gyldig godkjenning til Git-leverandøren.
- Finner ikke repositorium: Kontroller organisasjonen, prosjektet og repositoriumnavnene.
- Ingen tillatelse: Kontroller at Dataverse-kontoen har tillatelser for kildekontrolladministrasjon.
-
Finner ikke løsningen: Kontroller at det
SolutionUniqueNamefinnes i miljøet. - Grenen finnes ikke: Bekreft at den angitte grenen finnes i repositoriet.
Støtte og tilleggsressurser
Hvis du vil ha mer informasjon om kildekontrollintegrering med Datavers, kan du se: