使用 API 和 Azure DevOps 自动化集成 Git

借助 Microsoft Fabric Git 集成工具,团队可以使用源控件进行协作,从而为其 Fabric 内容构建有效且可重复使用的发布过程。

借助 Microsoft Fabric REST API,可以自动化 Fabric 过程和流程,从而以更少的错误更快完成任务。 因此获得的效率可以节省成本并提高生产力。

本文介绍了如何使用 Git 集成 REST API 在 Microsoft Fabric 中自动化集成 Git。

Git 集成 API 函数

Git 集成 REST API 有助你实现内容的持续集成和持续交付 (CI/CD)。 下面是可以使用 API 完成的几个示例:

先决条件

若要使用 Fabric Git API,需要:

可以在不使用 PowerShell 的情况下使用 REST API,不过本文中的脚本使用了 PowerShell。 若要运行脚本,需要执行以下步骤:

示例

可通过下面的 PowerShell 脚本来了解如何执行多个常见的自动化过程。 若要在 PowerShell 示例中查看或复制文本,请使用本部分中的链接。 还可以查看 Fabric Git 集成示例 GitHub 存储库中的所有示例。

全部提交

本节分步说明了如何以编程方式将工作区中的所有更改提交到 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. 描述请求正文 - 在脚本的这一部分中,需要指定要提交的项(如报告和笔记本)。

    $commitToGitBody = @{ 		
        mode = "All"
        comment = $commitMessage
    } | ConvertTo-Json
    
  3. 调用 CommitAll REST API:

    $commitToGitUrl = "{0}/workspaces/{1}/git/commitToGit" -f $global:baseUrl, $workspace.Id
    
    $commitToGitResponse = Invoke-WebRequest -Headers $global:fabricHeaders -Uri $commitToGitUrl -Method POST -Body $commitToGitBody
    
  4. 获取用于轮询操作状态的长期 OperationId。

    $operationId = $commitToGitResponse.Headers['x-ms-operation-id']
    $retryAfter = $commitToGitResponse.Headers['Retry-After']   
    

选择提交

在本节中,我们将介绍仅将工作区的特定更改提交到 Git 所涉及的步骤。

有关完整脚本,请参阅将选定更改提交到 Git

  1. 登录到 Git 并获取身份验证。
  2. 连接到工作区。
  3. 调用获取状态 API 以查看工作区的哪些项发生了更改。
  4. 选择要提交的具体项。
  5. 调用提交到 Git API,以将工作区的选定更改提交到连接的远程分支。

从 Git 更新

在本节中,我们将介绍使用 Git 中的更改更新工作区所涉及的步骤。 在此脚本中,我们将使用 Git 中的更改来更新工作区项,但会保留 Git 存储库不变。

有关完整脚本,请参阅从 Git 更新工作区

  1. 登录到 Git 并获取身份验证。
  2. 调用获取状态 API 以根据 Git 请求正文生成更新。
  3. 调用从 Git 更新 API,以使用推送到已连接分支的提交更新工作区。

连接和同步

本节介绍将工作区与 Git 连接和同步所涉及的步骤。 此脚本对于两个方向都有效。 我们可以将工作区中的更改提交到 Git,也可以根据 Git 中的更改来更新工作区项。

有关完整脚本,请参阅连接到 Git 并进行同步

  1. 登录到 Git 并获取身份验证。
  2. 调用连接 API,以将工作区连接到 Git 存储库和分支。
  3. 调用初始化连接 API,以初始化工作区与 Git 存储库/分支之间的连接。
  4. 根据初始化连接 API 的响应,调用提交到 Git从 Git 更新 API 以完成同步,或者在不需要任何操作的情况下不执行任何操作。

监视长期操作的进度

有关完整脚本,请参阅轮询长期操作

  1. 从 Git 更新提交到 Git 脚本中检索 operationId。
  2. 每隔 x 秒调用 获取 LRO 状态 API 并打印该状态。

注意事项和限制

  • 使用 API 进行 Git 集成的限制与使用 Git 集成用户界面时相同。
  • 不支持服务主体。
  • 使用增强刷新 API 刷新语义模型会导致每次刷新后产生 Git 差异