用于更新文件和签入 TFS 的 Azure DevOps 管道任务

Posted

技术标签:

【中文标题】用于更新文件和签入 TFS 的 Azure DevOps 管道任务【英文标题】:Azure DevOps pipeline task to update a file and check-in TFS 【发布时间】:2020-04-05 19:36:55 【问题描述】:

我正在使用 Azure Dev OPS 来触发构建和部署。我在 GIT 分支中有角度代码,将从中触发构建,并且基于构建#我需要更新 TFS 中的文件并签入相同的文件。

我已添加 PowerShell 任务以从 GIT 分支读取 build#。但我不知道在 TFS 分支中更新文件和签入的进一步步骤。

请建议 PowerShell 命令来完成上述任务。

【问题讨论】:

这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗? 谢谢利奥。刚才看到你的回复会尽量让你知道的。 现在结果如何?下面的答案是否解决了您的问题,如果是,您可以接受它作为答案,这样它可以帮助遇到同样问题的其他社区成员,我们可以存档这个帖子,谢谢。如果没有,请告诉我们您是否需要进一步的帮助。 我厌倦了在 Powershell 中运行以下命令,但它显示未知命令“GET https://instance/collection/project/_apis/git/repositories/repositoryId/commits ?api-version=5.0&branch=BranchName&$top=1 " 请告诉我确切的命令。 这个API你好像不太熟悉,有时间我给你提供完整的代码。 【参考方案1】:

用于更新文件和签入 TFS 的 Azure DevOps 管道任务

您可以调用 REST API Pushes - Create 来更新文件并使用 powershell 脚本在 TFS 分支中签入相同的文件。

    转到代理阶段并选择允许脚本访问 OAuth 令牌。见Use the OAuth token to access the REST API:

    在您的构建管道中添加一个 PowerShell 任务以获取分支上的最新提交您要更新文件并签入:

    GET https://instance/collection/project/_apis/git/repositories/repositoryId/commits?api-version=5.0&branch=BranchName&$top=1
    

    通过 REST API 更新文件并在 TFS 分支中签入相同的文件:

    POST https://instance/collection/project/_apis/git/repositories/repositoryId/pushes?api-version=5.0
    

正文(应用程序/json):


  "refUpdates": [
    
      "name": "refs/heads/$(BranchName)",
      "oldObjectId": "[step 2 commit ID]"
    
  ],
  "commits": [
    
      "comment": "Added a few more items to the task list.",
      "changes": [
        
          "changeType": "edit",
          "item": 
            "path": "/tasks.md"
          ,
          "newContent": 
            "content": "# Tasks\n\n* Item 1\n* Item 2\n* Item 3\n* Item 4\n\nIf you need to add more, update this file and add them!",
            "contentType": "rawtext"
          
        
      ]
    
  ]

作为测试结果:

注意:

如果文件内容包含引号(\"test\"),则需要解析引号, 与其他特殊包机相同。 使用Repositories - List 获取repositoryId

希望这会有所帮助。

【讨论】:

以上是关于用于更新文件和签入 TFS 的 Azure DevOps 管道任务的主要内容,如果未能解决你的问题,请参考以下文章

如何为 TFS 中组的特定用户提供签出和签入访问权限

如何使用 Visual Studio 2003 和 TFS?

如何使用 curl 自动上传和签入文件到共享点?

防止在 TFS 2017 分支上直接签入,仅允许合并

如何构建仅签入代码文件以及如何仅签入该构建的 tfs 中的代码工件?

将更新签入到 TFS 后编辑变更集注释