Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Erabili ConnectToGit eta DisconnectFromGit APIak zure Microsoft Dataverse ingurunea Git iturburu-kontrolarekin programatikoki integratzeko. API hauek erabiliz, soluzio indibidualak edo ingurune osoak Git biltegi onartuetara konekta ditzakezu eta konexio horiek kodearen bidez kudeatu.
Aurrebaldintzak
API hauek erabili aurretik, ziurtatu honako hauek dituzula:
- Microsoft Dataverse ingurunerako sarbidea
- Sistema-administratzailearen baimenak
- Git biltegi baterako irakurketa- eta idazketa-sarbidea
ConnectToGit APIa
Dataverse-ren irtenbide edo ingurune baten eta Git biltegi baten arteko konexioa sortzen du. Konexio hau erabiliz, Dataverse-ren osagaien iturburu-kontrola kudea dezakezu.
Parametroak
APIak ConnectToGit honako parametro hauek onartzen ditu:
| Parametroa | Mota | Beharrezkoa | Deskribapenak |
|---|---|---|---|
GitFolder |
String | Bai | Irtenbidea edo ingurunea lotu nahi duzun karpetaren izena. |
Branch |
String | Bai | Konektatu nahi duzun adarraren izena. |
ConnectionType |
Oso-osoa | Ez | Zehazten du zertara konektatu behar den. Ikus ConnectionType parametroa. |
GitProvider |
Oso-osoa | Ez | Git hornitzailea. Ikus GitProvider parametroa. |
Organization |
String | Ez | Konektatu nahi duzun erakundearen izena. |
Project |
String | Ez | Konektatu nahi duzun proiektuaren izena. |
Repository |
String | Ez | Konektatu nahi duzun biltegiaren izena. |
RootFolder |
String | Ez | Soluzio guztiak soluzioaren esparruan dauden erroko karpetaren izena. |
SolutionUniqueName |
String | Ez | Git-era konektatu nahi duzun soluzioaren izen esklusiboa. |
UpstreamBranch |
String | Ez | Konektatu nahi duzun upstream adarraren izena. Lehenespenez, biltegiaren adar lehenetsia da. |
GitHubConnectionId |
String | Ez | Power Platform GitHub konexioaren konexio ID-a. Derrigorrezkoa denean GitProvider1 da, salbu eta ez baduzu ematen GitHubPAT. Ezin da erabili sare birtualaren (VNET) euskarria Dataverse ingurunean gaituta dagoenean. |
GitHubPAT |
String | Ez | GitHub sarbide pertsonaleko token helburu biltegira sarbidea duena. Derrigorrezkoa denean GitProvider1 da, salbu eta ez baduzu ematen GitHubConnectionId. Dataverse ingurunerako sare birtualeko (VNET) laguntza gaituta dagoenean beharrezkoa da. |
GitHubAppConfigId |
String | Ez | GitHub App konfigurazio erregistroaren erreferentzia. Beharrezkoa denean GitProvider1. Erabili formatua githubappconfigs(<recordId>). |
ConnectionType parametroa
Parametroak ConnectionType Dataverse ingurune osoarekin edo irtenbide zehatz batera konektatu behar den ala ez kontrolatzen du.
| Balioa | Etiketa | Deskribapenak |
|---|---|---|
| 0 | Soluzioa | Dataverse irtenbide zehatz bat Git-ekin konektatzen du. |
| 1 | Ingurunea | Dataverse ingurune osoa Git-ekin konektatzen du. |
GitProvider parametroa
Erabili parametroa GitProvider erabiltzen ari zaren Git hornitzaile mota zehazteko, Azure DevOps edo GitHub.
| Balioa | Etiketa | Deskribapenak |
|---|---|---|
| 0 | Azure DevOps | Erabili Azure DevOps-en ostatatutako biltegietarako |
| 1 | GitHub | Erabili GitHub-en ostatatutako biltegietarako |
DisconnectFromGit APIa
Git konexioa Dataverse-ren irtenbide edo ingurune batetik kentzen du, eta iturburu-kontrolaren integrazioa desgaitzen du.
Parametroa
APIak DisconnectFromGit parametro bakarra du.
| Parametroa | Mota | Beharrezkoa | Deskribapenak |
|---|---|---|---|
SolutionUniqueName |
String | Ez | Git-etik deskonektatu nahi duzun soluzioaren izen esklusiboa. Irtenbide guztiak edo ingurumena deskonektatzea. |
Informazio gehigarria
Hona hemen deitzerakoan DisconnectFromGitzehaztu beharreko parametro-balio aukera batzuk.
-
Deskonektatu irtenbide bakarra: Eman
SolutionUniqueNameirtenbide zehatz bat deskonektatzeko. - Deskonektatu irtenbide guztiak: ez eman parametrorik soluzio mailako konexio guztiak deskonektatzeko.
- Deskonektatu ingurunea: ez eman parametrorik ingurune mailako konexioa deskonektatzeko.
Adibideak
Hurrengo adibideek eta DisconnectFromGit APIak erabiltzeko ConnectToGit egoerak deskribatzen dituzte:
- Konektatu zure Dataverse ingurune osoa Azure DevOps biltegi batera
- GitHub biltegi batera konektatu
- GitHub biltegi batera konektatu PowerShell erabiliz
- Deskonektatu Dataverse ingurune osoa Git-en iturburu-kontroletik
- Konektatu lehenengo irtenbidea Git biltegi batera
- Konektatu irtenbide gehigarriak Git biltegi berean, hasierako irtenbidea konektatu ondoren
- Deskonektatu irtenbide zehatz bat Git iturburu-kontroletik, beste irtenbide batzuk konektatuta mantenduz
Konektatu zure Dataverse ingurune osoa Azure DevOps biltegi batera
Konexio honek ingurune mailako konfigurazio eta osagai guztien iturburu-kontrola ahalbidetzen du.
Ez erabili parametro hauek konexio honekin:
RootFolderSolutionUniqueNameUpstreamBranch
Adibide honek erakusten du nola erabili ConnectToGit ekintza zure Dataverse ingurune osoa Azure DevOps biltegi batera konektatzeko.
Eskaera
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"
}
Erantzuna
HTTP/1.1 204 No Content
OData-Version: 4.0
GitHub biltegi batera konektatu
APIa erabili aurretik GitHub-era konektatzeko, egin GitHub aplikazioa sortzeko konfigurazio pausoak, instalatu helburu biltegian, inportatu bere gako pribatua Azure Key Vault-era eta sortu Power Platform GitHub konexioa. Informazio gehiago nahi izanez gero, ikusi Konektatu GitHub-era.
Sortu GitHub App konfigurazio erregistro bat Web APIa erabiliz
Erabili Dataverse OData Web API-a erregistro bat githubappconfig sortzeko. Bidali POST eskaera GitHub App bezero IDarekin, Key Vault URIarekin eta gako izenarekin.
Edozein HTTP bezero erabil dezakezu, hala nola Insomnia, Visual Studio Code REST Client edo curl, dei hauek egiteko. Egiaztapenerako eramale-token bat behar duzu. Informazio gehiago nahi izanez gero, ikus Erabili Microsoft Dataverse Web API.
POST {{DataverseOrgUrl}}/api/data/v9.2/githubappconfigs
Authorization: Bearer {{token}}
Content-Type: application/json
{
"githubappid": "Iv23liBWoH9sf7xDrRe6",
"keyvaulturi": "{{KeyVaultUri}}",
"keyname": "demoGitHubKey"
}
Garrantzitsua
Kontuan hartu erantzun goiburuan agertzen den erregistro IDa. Balio hau behar duzu kudeatutako identitatea identifikatzeko, RBAC konfiguratzeko eta deitzeko ConnectToGit. Erregistro IDak formatu bat erabiltzen du, adibidez 13d565bb-4c22-f111-a546-7ced8d6e3e85.
GitHub App konfigurazio erregistroa sortu ondoren, Key Vault Crypto User rola esleitu Dataverse-ren kudeatutako identitateari, Configure Key Vault role-based access control (RBAC)-n deskribatzen den bezala.
Deitu ConnectToGit APIa
Erregistroa sortu githubappconfig eta Key Vault RBAC konfiguratu ondoren, erabili Dataverse Web API-a iturburu-kontrol konexioa ezartzeko ekintza deituzConnectToGit.
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>)"
}
Garrantzitsua
Adarra dagoeneko egon behar du biltegian. Sortu lehenik GitHub-en behar bada. Balioak GitHubAppConfigId formatu githubappconfigs(<recordId>)hau erabili behar du .
Erantzun arrakastatsua jasotzen baduzu, ingurunea GitHub-era konektatuta.
GitHub biltegi batera konektatu PowerShell erabiliz
Hurrengo PowerShell adibideak GitHub App konfigurazio erregistroa sortzen du, Dataverse kudeatutako identitatea Microsoft Entra ID-n agertzea itxaroten du, Key Vault Crypto User rola kudeatutako identitateari esleitzen dio, eta ekintza deitzen ConnectToGit du. Jada GitHub App konfigurazio erregistro bat baduzu, eman GitHubAppConfigId konfigurazio eta Key Vault-en rolen esleipenaren pausoak saltatzeko.
Instalatu eta inportatu Az.Accounts, Az.KeyVault, eta Az.Resources PowerShell moduluak adibidea exekutatu aurretik. Saioa hasi Connect-AzAccount Dataverse ingurunean sartzeko sarbidea eta Key Vault rolak esleitzeko baimena duen kontu batekin.
Dataverse ingurunerako sare birtualeko (VNET) laguntza gaituta badago, eman GitHubPAT. GitHub konexioak ezin dira erabili sare birtualeko laguntzarekin.
[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."
Deskonektatu Dataverse ingurune osoa Git-en iturburu-kontroletik
Ekintza honek ingurune mailako Git konexioa kentzen du. Ez erabili parametroa SolutionUniqueName eragiketa honetarako. Dataverse-k automatikoki identifikatu eta kentzen du ingurune mailako Git konexioa.
Adibide honek erakusten du nola erabili DisconnectFromGit ekintza Dataverse ingurune osoa Git iturburu-kontroletik deskonektatzeko.
Eskaera
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
Erantzuna
HTTP/1.1 204 No Content
OData-Version: 4.0
Konektatu lehenengo irtenbidea Git biltegi batera
Konexio honek biltegiaren esteka eta karpeta egitura ezartzen ditu irtenbide mailako iturburu-kontrola ingurune bateko lehen irtenbidera.
Parametro hauen balioak sartu behar dituzu irtenbidea zehazteko:
RootFolderSolutionUniqueName
Adibide honek ConnectToGit ekintza nola erabili erakusten du lehen irtenbidea Git biltegi batera konektatzeko.
Eskaera
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"
}
Erantzuna
HTTP/1.1 204 No Content
OData-Version: 4.0
Konektatu irtenbide gehigarriak Git biltegi berean, hasierako irtenbidea konektatu ondoren
Lehenengo irtenbidea konektatu ondoren, soluzioaren parametro espezifikoak baino ez dituzu behar. Biltegiko konexioaren xehetasunak hasierako konexiotik heredatzen dituzu.
Ezarri parametro hauek soilik:
SolutionUniqueNameBranchGitFolder
Garrantzitsua
Lehenik eta behin, lehenengo irtenbidea konektatu behar duzu honek funtzionatu aurretik. Ikus Konektatu lehenengo irtenbidea Git biltegi batera.
Adibide honek ConnectToGit ekintza nola erabili erakusten du ondorengo irtenbideak Git biltegi batera konektatzeko.
Eskaera
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"
}
Erantzuna
HTTP/1.1 204 No Content
OData-Version: 4.0
Deskonektatu irtenbide zehatz bat Git iturburu-kontroletik, beste irtenbide batzuk konektatuta mantenduz
Erabili planteamendu hau irtenbide baten iturburu-kontrola kentzeko, besteei eragin gabe.
Adibide honek erakusten du nola erabili DisconnectFromGit ekintza irtenbide bateko iturburu-kontrola kentzeko, besteei eragin gabe.
Eskaera
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"
}
Erantzuna
HTTP/1.1 204 No Content
OData-Version: 4.0
Akatsen kontrola
Ez APIak ConnectToGit ez DisconnectFromGit du baliorik itzultzen ongi osatzen denean. API batek huts egiten duenean, errore bat itzultzen du.
Ohiko errore-agertoki hauek dira:
- Kredentzial baliogabeak: ziurtatu Git hornitzailearen baliozko autentifikazioa duzula.
- Biltegia ez da aurkitu: egiaztatu erakundearen, proiektuaren eta biltegiaren izenak.
- Baimena ukatuta: ziurtatu zure Dataverse kontuak iturburu-kontrola kudeatzeko baimenak dituela.
-
Irtenbidea ez da aurkitu: egiaztatu zure ingurunean dagoela
SolutionUniqueName. - Adarra ez da existitzen: baieztatu zehaztutako adarra biltegian dagoela.
Laguntza eta baliabide osagarriak
Dataverse-rekin iturburu-kontrolaren integrazioari buruzko informazio gehiago nahi izanez gero, ikus: