แชร์ผ่าน


การรวม Git โดยอัตโนมัติโดยใช้ API

เครื่องมือการรวม Microsoft Fabric Git ช่วยให้ทีมสามารถทํางานร่วมกันโดยใช้การควบคุมแหล่งที่มาเพื่อสร้างกระบวนการเผยแพร่ที่มีประสิทธิภาพและสามารถนํากลับมาใช้ใหม่ได้สําหรับเนื้อหา Fabric ของพวกเขา

ด้วย Microsoft Fabric REST API คุณสามารถทําให้ขั้นตอนและกระบวนการ Fabric ทํางานได้เร็วขึ้นและมีข้อผิดพลาดน้อยลงโดยอัตโนมัติ ประสิทธิภาพนี้นําไปสู่การประหยัดค่าใช้จ่ายและผลผลิตที่ดีขึ้น

บทความนี้อธิบายวิธีการใช้ REST API การรวม Git เพื่อทําให้การรวม Git ใน Microsoft Fabric เป็นอัตโนมัติ

ข้อกำหนดเบื้องต้น

เมื่อต้องการทํางานกับ Fabric Git API คุณจําเป็นต้องมี:

คุณสามารถใช้ REST API โดยไม่มี PowerShell ได้ แต่สคริปต์ในบทความนี้ใช้ PowerShell เพื่อเรียกใช้สคริปต์ คุณจําเป็นต้องทําตามขั้นตอนต่อไปนี้:

ฟังก์ชัน API การรวม Git

การรวม Git REST API สามารถช่วยให้คุณบรรลุการผสานรวมอย่างต่อเนื่องและการจัดส่งแบบต่อเนื่อง (CI/CD) ของเนื้อหาของคุณ นี่คือตัวอย่างบางส่วนของสิ่งที่สามารถทําได้โดยใช้ API:

ตัวอย่าง

ใช้สคริปต์ PowerShell ต่อไปนี้เพื่อทําความเข้าใจวิธีการดําเนินการอัตโนมัติทั่วไปหลายกระบวนการ หากต้องการดูหรือคัดลอกข้อความในตัวอย่างของ PowerShell ให้ใช้ลิงก์ในส่วนนี้ คุณยังสามารถดูตัวอย่าง ทั้งหมดในตัวอย่าง การรวม Fabric Git ของ Git repo

เชื่อมต่อและอัปเดต

ในส่วนนี้จะอธิบายขั้นตอนที่เกี่ยวข้องในการเชื่อมต่อและอัปเดตพื้นที่ทํางานด้วย Git

สําหรับสคริปต์ที่สมบูรณ์ ดูเชื่อมต่อและอัปเดตจาก Git

  1. ลงชื่อเข้าใช้และรับโทเค็น การเข้าถึง - ลงชื่อเข้าใช้ 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
        $fabricToken = (Get-AzAccessToken -ResourceUrl $global:resourceUrl).Token
    
    $global:fabricHeaders = @{
            'Content-Type' = "application/json"
            'Authorization' = "Bearer {0}" -f $fabricToken
        }
    }
    
  2. เรียกใช้ API เชื่อมต่อเพื่อเชื่อมต่อพื้นที่ทํางานกับที่เก็บ Git และสาขา

    
    # 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
    
  3. เรียกใช้ 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 "{}"
    
  4. โดยยึดตามการตอบสนองจาก 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

  1. เข้าสู่ระบบ Git และรับการรับรองความถูกต้อง
  2. เรียกใช้ API รับสถานะเพื่อสร้างการอัปเดตจากเนื้อความของคําขอ Git
  3. เรียกใช้อัปเดตจาก Git API เพื่ออัปเดตพื้นที่ทํางานด้วยการยอมรับที่ส่งไปยังสาขาที่เชื่อมต่อแล้ว

ยอมรับทั้งหมด

ส่วนนี้ให้คําอธิบายทีละขั้นตอนเกี่ยวกับวิธีการบันทึกการเปลี่ยนแปลงทั้งหมดจากพื้นที่ทํางานไปยัง Git ทางโปรแกรม

สําหรับสคริปต์ที่สมบูรณ์ ดู ยอมรับการเปลี่ยนแปลงทั้งหมดไปยัง Git

  1. เข้าสู่ระบบ Git และรับการรับรองความถูกต้อง
  2. เชื่อมต่อกับพื้นที่ทํางาน
  3. เรียกใช้งาน Commit ไปยัง Git REST API
  4. รับ Long Running OperationId สําหรับการโพลล์สถานะของการดําเนินการ

ยอมรับที่เลือก

ในส่วนนี้จะอธิบายขั้นตอนที่เกี่ยวข้องในการกําหนดเฉพาะการเปลี่ยนแปลงที่เฉพาะเจาะจงจากพื้นที่ทํางานไปยัง Git

สําหรับสคริปต์ที่สมบูรณ์ ดู ยอมรับการเปลี่ยนแปลงที่เลือกไปยัง Git

  1. เข้าสู่ระบบ Git และรับการรับรองความถูกต้อง
  2. เชื่อมต่อกับพื้นที่ทํางาน
  3. เรียกใช้ API รับสถานะเพื่อดูว่าพื้นที่ทํางานรายการใดมีการเปลี่ยนแปลง
  4. เลือกรายการที่ระบุเพื่อดําเนินการ
  5. เรียกใช้การ ยอมรับไปยัง Git API เพื่อยอมรับการเปลี่ยนแปลงที่เลือกจากพื้นที่ทํางานไปยังสาขาระยะไกลที่เชื่อมต่อ

ตรวจสอบความคืบหน้าของการทํางานที่ใช้เวลานาน

สําหรับสคริปต์ที่สมบูรณ์ ดู สํารวจการทํางานที่ใช้เวลานาน

  1. เรียกใช้ operationId จากอัปเดตจาก Git หรือยืนยันกับสคริปต์ Git
  2. เรียกใช้ API รับสถานะ LRO ในช่วงเวลาที่ระบุ (เป็นวินาที) และพิมพ์สถานะ

ข้อควรพิจารณาและข้อจำกัด

  • การรวม Git โดยใช้ API ขึ้นอยู่กับข้อจํากัดเดียวกันกับส่วนติดต่อผู้ใช้การรวม Git
  • ไม่รองรับโครงร่างสําคัญของบริการ
  • การรีเฟรชแบบจําลองความหมายโดยใช้ API การรีเฟรชที่ปรับปรุงแล้วจะทําให้เกิด Git diff หลังจากการรีเฟรชแต่ละครั้ง