Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí ConnectToGit a DisconnectFromGit rozhraní API můžete programaticky integrovat prostředí Microsoft Dataverse se systémem řízení verzí Git. Pomocí těchto rozhraní API můžete připojit jednotlivá řešení nebo celá prostředí k podporovaným úložištím Git a spravovat tato připojení prostřednictvím kódu.
Předpoklady
Před použitím těchto rozhraní API se ujistěte, že máte:
- Přístup k prostředí Microsoft Dataverse
- Oprávnění správce systému
- Přístup ke čtení a zápisu do úložiště Git
ConnectToGit API
Vytvoří propojení mezi řešením Dataverse nebo prostředím a úložištěm Git. Pomocí tohoto připojení můžete spravovat správu zdrojového kódu pro komponenty Dataverse.
Parameters
Rozhraní ConnectToGit API přijímá následující parametry:
| Parameter | Typ | Povinné | Description |
|---|---|---|---|
GitFolder |
String | Ano | Název složky, ke které chcete vytvořit vazbu vašeho řešení nebo prostředí |
Branch |
String | Ano | Název větve, ke které se chcete připojit. |
ConnectionType |
Celočíselný datový typ | Ne | Určuje, k čemu se má připojit. Přečtěte si parametr ConnectionType. |
GitProvider |
Celočíselný datový typ | Ne | Poskytovatel Gitu. Viz parametr GitProvider. |
Organization |
String | Ne | Název organizace, ke které se chcete připojit. |
Project |
String | Ne | Název projektu, ke kterému se chcete připojit. |
Repository |
String | Ne | Název úložiště, ke kterému se chcete připojit. |
RootFolder |
String | Ne | Název kořenové složky, ve které se nacházejí všechna vaše řešení v oboru řešení. |
SolutionUniqueName |
String | Ne | Jedinečný název řešení, ke kterému se chcete připojit k Gitu. |
UpstreamBranch |
String | Ne | Název upstreamové větve, ke které se chcete připojit. Výchozí nastavení je výchozí větev úložiště. |
GitHubConnectionId |
String | Ne | ID připojení pro připojení GitHub v Power Platform. Vyžaduje se, když je GitProviderGitHubPAT, pokud neposkytnete 1. Nejde použít, pokud je pro prostředí Dataverse povolená podpora virtuální sítě. |
GitHubPAT |
String | Ne | GitHub osobní přístupový token s přístupem k cílovému úložišti. Vyžaduje se, pokud je GitProviderGitHubConnectionId, pokud nezadáte 1. Vyžaduje se, když je pro prostředí Dataverse povolená podpora virtuální sítě. |
GitHubAppConfigId |
String | Ne | Odkaz na záznam konfigurace aplikace GitHub Vyžaduje se, pokud GitProvider je 1. Použijte formát githubappconfigs(<recordId>). |
Parametr ConnectionType
Parametr ConnectionType určuje, jestli se chcete připojit k celému prostředí Dataverse nebo ke konkrétnímu řešení.
| Hodnota | Popisek | Description |
|---|---|---|
| 0 | Řešení | Připojí konkrétní řešení Dataverse k Gitu. |
| 1 | Prostředí | Připojí celé prostředí Dataverse k Gitu. |
Parametr poskytovatele Gitu
Pomocí parametru GitProvider určete typ zprostředkovatele Gitu, který používáte, a to buď Azure DevOps, nebo GitHub.
| Hodnota | Popisek | Description |
|---|---|---|
| 0 | Azure DevOps | Použití pro úložiště hostovaná v Azure DevOps |
| 1 | GitHub | Použití pro úložiště hostovaná na GitHubu |
Rozhraní API DisconnectFromGit
Odebere připojení Git z řešení Nebo prostředí Dataverse a zakáže integraci správy zdrojového kódu.
Parameter
Rozhraní DisconnectFromGit API má pouze jeden parametr.
| Parameter | Typ | Povinné | Description |
|---|---|---|---|
SolutionUniqueName |
String | Ne | Jedinečný název řešení, které chcete odpojit od Gitu. Vynechejte odpojení všech řešení nebo prostředí. |
Další informace
Tady je několik možností hodnoty parametru, které se mají určit při vyvolání DisconnectFromGit.
-
Odpojit konkrétní řešení: Poskytněte
SolutionUniqueNamek odpojení konkrétního řešení. - Odpojit všechna řešení: Nezadávejte žádné parametry pro odpojení všech připojení na úrovni řešení.
- Odpojte prostředí: Nepoužívejte žádné parametry pro odpojení připojení na úrovni prostředí.
Příklady
Následující příklady popisují scénáře pro použití rozhraní API ConnectToGit a DisconnectFromGit:
- Připojení celého prostředí Dataverse k úložišti Azure DevOps
- Připojení k úložišti GitHub
- Připojení k úložišti GitHub pomocí PowerShellu
- Odpojení celého prostředí Dataverse od správy zdrojového kódu Gitu
- Připojení prvního řešení k úložišti Git
- Po připojení počátečního řešení připojte další řešení ke stejnému úložišti Git.
- Odpojení konkrétního řešení od správy zdrojového kódu Gitu při zachování připojení jiných řešení
Připojení celého prostředí Dataverse k úložišti Azure DevOps
Toto připojení umožňuje správu zdrojového kódu pro všechny konfigurace a komponenty na úrovni prostředí.
U tohoto připojení nepoužívejte tyto parametry:
RootFolderSolutionUniqueNameUpstreamBranch
Tento příklad ukazuje, jak pomocí akce ConnectToGit připojit celé prostředí Dataverse k úložišti Azure DevOps.
Žádost
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"
}
odpověď
HTTP/1.1 204 No Content
OData-Version: 4.0
Připojení k úložišti GitHub
Než použijete rozhraní API pro připojení k GitHub, dokončete kroky nastavení a vytvořte aplikaci GitHub, nainstalujte ji do cílového úložiště, importujte jeho privátní klíč do Azure Key Vault a vytvořte připojení GitHub Power Platform. Další informace najdete v tématu Připojení k GitHub.
Vytvoření záznamu konfigurace aplikace GitHub pomocí webového rozhraní API
K vytvoření záznamu githubappconfig použijte webové rozhraní API Dataverse OData. Odešlete požadavek POST s ID klienta aplikace GitHub, Key Vault identifikátorem URI a názvem klíče.
K provádění těchto volání můžete použít libovolného klienta HTTP, například Insomnia, REST Client pro Visual Studio Code nebo curl. Pro ověření potřebujete nosný token. Další informace najdete v tématu Použití webového rozhraní API Microsoft Dataverse.
POST {{DataverseOrgUrl}}/api/data/v9.2/githubappconfigs
Authorization: Bearer {{token}}
Content-Type: application/json
{
"githubappid": "Iv23liBWoH9sf7xDrRe6",
"keyvaulturi": "{{KeyVaultUri}}",
"keyname": "demoGitHubKey"
}
Important
Poznamenejte si ID záznamu vrácené v hlavičce odpovědi. Tuto hodnotu potřebujete k identifikaci spravované identity, konfiguraci RBAC a volání ConnectToGit. ID záznamu používá formát, například 13d565bb-4c22-f111-a546-7ced8d6e3e85.
Po vytvoření záznamu konfigurace aplikace GitHub přiřaďte spravované identitě Dataverse roli Key Vault Crypto User, jak je popsáno v části Konfigurace řízení přístupu na základě rolí (RBAC) pro Key Vault.
Volání rozhraní API ConnectToGit
Po vytvoření záznamu githubappconfig a konfiguraci řízení přístupu na základě role (RBAC) pro Key Vault použijte webové rozhraní Dataverse API k navázání připojení ke správě zdrojového kódu voláním akce ConnectToGit.
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>)"
}
Important
Větev už musí existovat v úložišti. V případě potřeby ho nejprve vytvořte v GitHub. Hodnota GitHubAppConfigId musí používat formát githubappconfigs(<recordId>).
Pokud obdržíte úspěšnou odpověď, prostředí se připojí k GitHub.
Připojení k úložišti GitHub pomocí PowerShellu
Následující příklad PowerShellu vytvoří záznam konfigurace GitHub aplikace, počká, až se spravovaná identita Dataverse zobrazí v Microsoft Entra ID, přiřadí roli Key Vault Crypto User spravované identitě a zavolá ConnectToGit akci. Pokud už máte záznam konfigurace aplikace GitHub App, zadejte GitHubAppConfigId, aby se přeskočily kroky konfigurace a přiřazení role ke službě Key Vault.
Před spuštěním příkladu Az.Accountsnainstalujte a naimportujte moduly , Az.KeyVaulta Az.Resources PowerShell. Přihlaste se pomocí Connect-AzAccount účtu, který má přístup k prostředí Dataverse a oprávnění k přiřazování rolí Key Vault.
Pokud je pro prostředí Dataverse povolená podpora virtuální sítě, zadejte GitHubPAT. GitHub připojení se nedají použít s podporou virtuální sítě.
[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."
Odpojení celého prostředí Dataverse od správy zdrojového kódu Gitu
Tato akce odebere připojení Git na úrovni prostředí. Pro tuto operaci nepoužívejte SolutionUniqueName parametr. Služba Dataverse automaticky identifikuje a odebere připojení Git na úrovni prostředí.
Tento příklad ukazuje, jak pomocí akce DisconnectFromGit odpojit celé prostředí Dataverse od správy zdrojového kódu Git.
Žádost
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
odpověď
HTTP/1.1 204 No Content
OData-Version: 4.0
Připojení prvního řešení k úložišti Git
Toto připojení vytvoří propojení úložiště a strukturu složek pro správu zdrojového kódu na úrovni řešení s prvním řešením v prostředí.
Abyste mohli určit řešení, musíte zahrnout hodnoty pro tyto parametry:
RootFolderSolutionUniqueName
Tento příklad ukazuje, jak pomocí akce ConnectToGit připojit první řešení k úložišti Git.
Žádost
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"
}
odpověď
HTTP/1.1 204 No Content
OData-Version: 4.0
Po připojení počátečního řešení připojte další řešení ke stejnému úložišti Git.
Po připojení prvního řešení potřebujete pouze parametry specifické pro řešení. Z počátečního připojení dědíte podrobnosti o připojení úložiště.
Nastavte pouze tyto parametry:
SolutionUniqueNameBranchGitFolder
Important
Před tím, než to funguje, musíte nejprve připojit první řešení. Viz Připojení prvního řešení k úložišti Git.
Tento příklad ukazuje, jak pomocí akce ConnectToGit připojit následná řešení k úložišti Git.
Žádost
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"
}
odpověď
HTTP/1.1 204 No Content
OData-Version: 4.0
Odpojení konkrétního řešení od správy zdrojového kódu Gitu při zachování připojení jiných řešení
Tento přístup použijte k odebrání správy zdrojového kódu pro jedno řešení, aniž by to ovlivnilo ostatní.
Tento příklad ukazuje, jak pomocí akce DisconnectFromGit odebrat správu zdrojového kódu pro jedno řešení, aniž by to ovlivnilo ostatní.
Žádost
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"
}
odpověď
HTTP/1.1 204 No Content
OData-Version: 4.0
Zpracování chyb
ConnectToGit
DisconnectFromGit Ani rozhraní API nevrací hodnotu po úspěšném dokončení. Když se rozhraní API nezdaří, vrátí chybu.
Mezi běžné scénáře chyb patří:
- Neplatné přihlašovací údaje: Ujistěte se, že máte platné ověřování u poskytovatele Gitu.
- Úložiště se nenašlo: Ověřte názvy organizací, projektů a úložišť.
- Oprávnění byla odepřena: Ujistěte se, že váš účet Dataverse má oprávnění ke správě zdrojového kódu.
-
Řešení se nenašlo: Ověřte, že
SolutionUniqueNameve vašem prostředí existuje. - Větev neexistuje: Ověřte, že zadaná větev existuje v úložišti.
Podpora a další zdroje informací
Další informace o integraci správy zdrojového kódu s Dataverse najdete v tématech: