หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
เครื่องมือการรวม Microsoft Fabric Git ช่วยให้ทีมสามารถทํางานร่วมกันโดยใช้การควบคุมแหล่งที่มาเพื่อสร้างกระบวนการเผยแพร่ที่มีประสิทธิภาพและสามารถนํากลับมาใช้ใหม่ได้สําหรับเนื้อหา Fabric ของพวกเขา
ด้วย Microsoft Fabric REST API คุณสามารถทําให้ขั้นตอนและกระบวนการ Fabric ทํางานได้เร็วขึ้นและมีข้อผิดพลาดน้อยลงโดยอัตโนมัติ ประสิทธิภาพนี้นําไปสู่การประหยัดค่าใช้จ่ายและผลผลิตที่ดีขึ้น
บทความนี้อธิบายวิธีการใช้ REST API การรวม Git เพื่อทําให้การรวม Git ใน Microsoft Fabric เป็นอัตโนมัติ
ข้อกำหนดเบื้องต้น
เมื่อต้องการทํางานกับ Fabric Git API คุณจําเป็นต้องมี:
ข้อกําหนดเบื้องต้นเดียวกันที่คุณจําเป็นต้องใช้การรวม Git ใน UI
โทเค็น Microsoft Entra สําหรับบริการ Fabric ใช้โทเค็นนั้นในส่วนหัวการรับรองความถูกต้องของการเรียกใช้ API สําหรับข้อมูลเกี่ยวกับวิธีการรับโทเค็น ดู การเริ่มต้นใช้งานด่วน Fabric API
ถ้าคุณกําลังใช้โครงร่างสําคัญของบริการ จะต้องมีสิทธิ์เดียวกันกับโครงร่างสําคัญของผู้ใช้ หากต้องการตั้งค่าบริการหลักสําหรับ Azure DevOps โปรดดูการรวม Git กับโครงร่างสําคัญของบริการ
คุณสามารถใช้ REST API ได้โดยไม่ต้อง PowerShell แต่สคริปต์ในบทความนี้ใช้ PowerShell เมื่อต้องการเรียกใช้สคริปต์ ให้ทําตามขั้นตอนต่อไปนี้:
- ติดตั้ง PowerShell
- ติดตั้งโมดูล Azure PowerShell Az
ฟังก์ชัน API การรวม Git
การรวม Git REST API สามารถช่วยให้คุณบรรลุการผสานรวมอย่างต่อเนื่องและการจัดส่งแบบต่อเนื่อง (CI/CD) ของเนื้อหาของคุณ นี่คือตัวอย่างบางส่วนของสิ่งที่สามารถทําได้โดยใช้ API:
เชื่อมต่อ และ ยกเลิกการเชื่อมต่อ พื้นที่ทํางานเฉพาะจากที่เก็บข้อมูล Git และสาขาที่เชื่อมต่อพื้นที่ทํางานนั้น (Connect จําเป็นต้องใช้ connectionId ของข้อมูลประจําตัวของผู้ให้บริการ Git)
รับรายละเอียดการเชื่อมต่อ สําหรับพื้นที่ทํางานที่ระบุ
รับหรือสร้างการเชื่อมต่อข้อมูลประจําตัวของผู้ให้บริการ Git
อัปเดตข้อมูลประจําตัว Git ของฉันเพื่อปรับปรุงรายละเอียดการกําหนดค่าข้อมูลประจําตัว Git ของคุณ จําเป็นต้องใช้ connectionId ของข้อมูลประจําตัวของผู้ให้บริการ Git
รับข้อมูลประจําตัว Git ของฉันเพื่อรับรายละเอียดการกําหนดค่าข้อมูลประจําตัว Git ของคุณ
เริ่มต้นการเชื่อมต่อ สําหรับพื้นที่ทํางานที่เชื่อมต่อกับ Git
ดูรายการที่มีการเปลี่ยนแปลงที่เข้ามา และรายการที่มีการเปลี่ยนแปลงที่ยังไม่ได้มอบหมายให้กับ Git ด้วย API สถานะ Git
ยอมรับ การเปลี่ยนแปลงที่ทําในพื้นที่ทํางานไปยังสาขาระยะไกลที่เชื่อมต่อกัน
อัปเดตพื้นที่ทํางาน ด้วยยอมรับที่ส่งไปยังสาขาที่เชื่อมต่อกัน
ตัวอย่าง
ใช้สคริปต์ PowerShell ต่อไปนี้เพื่อทําความเข้าใจวิธีการดําเนินการอัตโนมัติทั่วไปหลายกระบวนการ หากต้องการดูหรือคัดลอกข้อความในตัวอย่างของ PowerShell ให้ใช้ลิงก์ในส่วนนี้ คุณยังสามารถดูตัวอย่าง ทั้งหมดในตัวอย่าง การรวม Fabric Git ของ Git repo
เชื่อมต่อและอัปเดต
ในส่วนนี้จะอธิบายขั้นตอนที่เกี่ยวข้องในการเชื่อมต่อและอัปเดตพื้นที่ทํางานด้วย Git
สําหรับสคริปต์ที่สมบูรณ์ ดูเชื่อมต่อและอัปเดตจาก Git
เชื่อมต่อกับบัญชี Azure และรับโทเค็นการเข้าถึง - ลงชื่อเข้าใช้ Fabric ในฐานะผู้ใช้หรือโครงร่างสําคัญของบริการ ใช้คําสั่ง Connect-AzAccount เพื่อเชื่อมต่อ เพื่อรับโทเค็นการเข้าถึง ใช้คําสั่ง Get-AzAccessToken และ แปลงโทเค็นสตริงที่ปลอดภัยเป็นข้อความธรรมดา
โค้ดของคุณควรมีลักษณะดังนี้:
$global:resourceUrl = "https://api.fabric.microsoft.com" $global:fabricHeaders = @{} function SetFabricHeaders() { #Login to Azure Connect-AzAccount | Out-Null # Get authentication $secureFabricToken = (Get-AzAccessToken -AsSecureString -ResourceUrl $global:resourceUrl).Token # Convert secure string to plain test $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureFabricToken) try { $fabricToken = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr) } finally { [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) } $global:fabricHeaders = @{ 'Content-Type' = "application/json" 'Authorization' = "Bearer {0}" -f $fabricToken } }
เรียกใช้ API เชื่อมต่อเพื่อเชื่อมต่อพื้นที่ทํางานกับที่เก็บ Git และสาขา
$global:baseUrl = "https://api.fabric.microsoft.com/v1" $workspaceName = "<WORKSPACE NAME>" $getWorkspacesUrl = "{0}/workspaces" -f $global:baseUrl $workspaces = (Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getWorkspacesUrl -Method GET).value # Find the workspace by display name $workspace = $workspaces | Where-Object {$_.DisplayName -eq $workspaceName} # Connect to Git Write-Host "Connecting the workspace '$workspaceName' to Git." $connectUrl = "{0}/workspaces/{1}/git/connect" -f $global:baseUrl, $workspace.Id # AzureDevOps details $azureDevOpsDetails = @{ gitProviderType = "AzureDevOps" organizationName = "<ORGANIZATION NAME>" projectName = "<PROJECT NAME>" repositoryName = "<REPOSITORY NAME>" branchName = "<BRANCH NAME>" directoryName = "<DIRECTORY NAME>" } $connectToGitBody = @{ gitProviderDetails = $azureDevOpsDetails } | ConvertTo-Json Invoke-RestMethod -Headers $global:fabricHeaders -Uri $connectUrl -Method POST -Body $connectToGitBody
เรียกใช้ API การเชื่อมต่อเริ่มต้นเพื่อเริ่มต้นการเชื่อมต่อระหว่างพื้นที่ทํางานและที่เก็บ Git/สาขา
# Initialize Connection Write-Host "Initializing Git connection for workspace '$workspaceName'." $initializeConnectionUrl = "{0}/workspaces/{1}/git/initializeConnection" -f $global:baseUrl, $workspace.Id $initializeConnectionResponse = Invoke-RestMethod -Headers $global:fabricHeaders -Uri $initializeConnectionUrl -Method POST -Body "{}"
โดยยึดตามการตอบสนองจาก API การเชื่อมต่อเริ่มต้น เรียกใช้การอัป เดจาก Git API เพื่อดําเนินการอัปเดตให้เสร็จสมบูรณ์ หรือไม่ต้องทําอะไรถ้าไม่มีการดําเนินการใด ๆ
สคริปต์ต่อไปนี้จะปรับปรุงและ ตรวจสอบความคืบหน้า:
if ($initializeConnectionResponse.RequiredAction -eq "UpdateFromGit") { # Update from Git Write-Host "Updating the workspace '$workspaceName' from Git." $updateFromGitUrl = "{0}/workspaces/{1}/git/updateFromGit" -f $global:baseUrl, $workspace.Id $updateFromGitBody = @{ remoteCommitHash = $initializeConnectionResponse.RemoteCommitHash workspaceHead = $initializeConnectionResponse.WorkspaceHead } | ConvertTo-Json $updateFromGitResponse = Invoke-WebRequest -Headers $global:fabricHeaders -Uri $updateFromGitUrl -Method POST -Body $updateFromGitBody $operationId = $updateFromGitResponse.Headers['x-ms-operation-id'] $retryAfter = $updateFromGitResponse.Headers['Retry-After'] Write-Host "Long Running Operation ID: '$operationId' has been scheduled for updating the workspace '$workspaceName' from Git with a retry-after time of '$retryAfter' seconds." -ForegroundColor Green # Poll Long Running Operation $getOperationState = "{0}/operations/{1}" -f $global:baseUrl, $operationId do { $operationState = Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getOperationState -Method GET Write-Host "Update from Git operation status: $($operationState.Status)" if ($operationState.Status -in @("NotStarted", "Running")) { Start-Sleep -Seconds $retryAfter } } while($operationState.Status -in @("NotStarted", "Running")) }
อัปเดตจาก Git
ในส่วนนี้ เราจะอธิบายขั้นตอนที่เกี่ยวข้องในการอัปเดตพื้นที่ทํางานด้วยการเปลี่ยนแปลงจาก Git ในสคริปต์นี้ เราอัปเดตรายการพื้นที่ทํางานด้วยการเปลี่ยนแปลงจาก Git แต่เราปล่อยให้ที่เก็บ Git ไม่เปลี่ยนแปลง
สําหรับสคริปต์ที่สมบูรณ์ ดูอัปเดตพื้นที่ทํางานจาก Git
- เข้าสู่ระบบ Git และรับการรับรองความถูกต้อง
- เรียกใช้ API รับสถานะเพื่อสร้างการอัปเดตจากเนื้อความของคําขอ Git
- เรียกใช้อัปเดตจาก Git API เพื่ออัปเดตพื้นที่ทํางานด้วยการยอมรับที่ส่งไปยังสาขาที่เชื่อมต่อแล้ว
ยอมรับทั้งหมด
ส่วนนี้ให้คําอธิบายทีละขั้นตอนเกี่ยวกับวิธีการบันทึกการเปลี่ยนแปลงทั้งหมดจากพื้นที่ทํางานไปยัง Git ทางโปรแกรม
สําหรับสคริปต์ที่สมบูรณ์ ดู ยอมรับการเปลี่ยนแปลงทั้งหมดไปยัง Git
- เข้าสู่ระบบ Git และรับการรับรองความถูกต้อง
- เชื่อมต่อกับพื้นที่ทํางาน
- เรียกใช้งาน Commit ไปยัง Git REST API
- รับ Long Running OperationId สําหรับการโพลล์สถานะของการดําเนินการ
ยอมรับที่เลือก
ในส่วนนี้จะอธิบายขั้นตอนที่เกี่ยวข้องในการกําหนดเฉพาะการเปลี่ยนแปลงที่เฉพาะเจาะจงจากพื้นที่ทํางานไปยัง Git
สําหรับสคริปต์ที่สมบูรณ์ ดู ยอมรับการเปลี่ยนแปลงที่เลือกไปยัง Git
- เข้าสู่ระบบ Git และรับการรับรองความถูกต้อง
- เชื่อมต่อกับพื้นที่ทํางาน
- เรียกใช้ API รับสถานะเพื่อดูว่าพื้นที่ทํางานรายการใดมีการเปลี่ยนแปลง
- เลือกรายการที่ระบุเพื่อดําเนินการ
- เรียกใช้การ ยอมรับไปยัง Git API เพื่อยอมรับการเปลี่ยนแปลงที่เลือกจากพื้นที่ทํางานไปยังสาขาระยะไกลที่เชื่อมต่อ
ตรวจสอบความคืบหน้าของการทํางานที่ใช้เวลานาน
สําหรับสคริปต์ที่สมบูรณ์ ดู สํารวจการทํางานที่ใช้เวลานาน
- เรียกใช้ operationId จากอัปเดตจาก Git หรือยืนยันกับสคริปต์ Git
- เรียกใช้ API รับสถานะ LRO ในช่วงเวลาที่ระบุ (เป็นวินาที) และพิมพ์สถานะ
รับหรือสร้างการเชื่อมต่อข้อมูลประจําตัวของผู้ให้บริการ Git
เพื่อ เชื่อมต่อ กับที่เก็บข้อมูล Git หรือ อัปเดตข้อมูลประจําตัว Git ของคุณ คุณจําเป็นต้องระบุ connectionId connectionId อาจมาจากการเชื่อมต่อใหม่ที่คุณสร้าง หรือการเชื่อมต่อที่มีอยู่
- สร้าง การเชื่อมต่อใหม่ด้วยข้อมูลประจําตัวของผู้ให้บริการ Git ของคุณ
- ใช้ การเชื่อมต่อที่มีอยู่ที่คุณมีสิทธิ์
สร้างการเชื่อมต่อใหม่ที่จัดเก็บข้อมูลประจําตัว Git ของคุณ
ส่วนย่อยของโค้ดต่อไปนี้แสดงเนื้อความของการร้องขอตัวอย่างเพื่อสร้างการเชื่อมต่อที่จัดเก็บข้อมูลประจําตัว Azure DevOps ของคุณ ตัวอย่างแบบเต็มสามารถพบได้ใน repo ตัวอย่าง Fabric
# Connection with ServicePrincipal details for AzureDevOpsSourceControl
$adoSPConnection = @{
connectivityType = "ShareableCloud"
displayName = "<CONNECTION NAME>"
connectionDetails = @{
type = "AzureDevOpsSourceControl"
creationMethod = "AzureDevOpsSourceControl.Contents"
parameters = @(
@{
dataType = "Text"
name = "url"
value = "<Repo url in Azure DevOps>"
}
)
}
credentialDetails = @{
credentials = @{
credentialType = "ServicePrincipal"
tenantId = "<SP tenant (directory) id (Guid)>"
servicePrincipalClientId = "<SP APP (clint) id (Guid)>"
servicePrincipalSecret = "<SP Secret>"
}
}
}
#Note: AzureDevOps for UserPrincipal is not supported (since it requires interactive OAuth2)
รับรายการการเชื่อมต่อที่มีอยู่
ใช้ API การเชื่อมต่อรายการ เพื่อรับรายการของการเชื่อมต่อที่มีอยู่ที่คุณมีสิทธิ์และคุณสมบัติ
คำขอตัวอย่าง
GET https://api.fabric.microsoft.com/v1/connections
การตอบกลับตัวอย่าง
{
"value": [
{
"id": "e3607d15-6b41-4d11-b8f4-57cdcb19ffc8",
"displayName": "MyGitHubPAT1",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
},
{
"id": "3aba8f7f-d1ba-42b1-bb41-980029d5a1c1",
"displayName": "MyGitHubPAT2",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com/OrganizationName/RepositoryName",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
}
]
}
คัดลอก ID ของการเชื่อมต่อที่คุณต้องการและใช้ใน Git - เชื่อมต่อหรือ Git - อัปเดต API ข้อมูลประจําตัว Git ของฉัน
ข้อควรพิจารณาและข้อจำกัด
- การรวม Git โดยใช้ API ขึ้นอยู่กับข้อจํากัดเดียวกันกับส่วนติดต่อผู้ใช้การรวม Git
- การรีเฟรชแบบจําลองความหมายโดยใช้ API การรีเฟรชที่ปรับปรุงแล้วจะทําให้เกิด Git diff หลังจากการรีเฟรชแต่ละครั้ง