如何使用 TFVC 使用 Yaml 创建构建管道?

Posted

技术标签:

【中文标题】如何使用 TFVC 使用 Yaml 创建构建管道?【英文标题】:How can I create build pipeline with Yaml using TFVC? 【发布时间】:2020-01-07 12:58:40 【问题描述】:

需要使用 TFVC 存储库使用 yaml 创建 CICD 管道。

【问题讨论】:

您能否edit 您的问题并尝试更详细地描述您预期的 CICD 管道? 事情进展如何?考虑接受一个您认为对您有帮助的答案,以便其他人可以参考该答案。 【参考方案1】:

请参阅此文档:Two types of repositories the pipelines supported。

到目前为止,YAML 仅支持 git 类型的存储库,我们还没有扩展功能和 YAML 语法以支持 YAML for TFVC 存储库。

由于只有一种解决方法是将您的存储库从 TFVC 迁移到 Git,但我不确定您进行迁移是否可行,尤其是在您的存储库有点旧的情况下。如果 repos 有点旧,迁移会使其丢失许多历史记录,包括旧的提交和构建。

在我们的官方建议论坛上,有很多用户和你有相同的需求:Make YAML support TFVC。您可以在那里投票和评论您的需求。我们的产品组团队和相应的 PM 将审查这些建议,并考虑将其作为开发计划,为用户带来更灵活的体验。

【讨论】:

【参考方案2】:

YAML 管道仅受 GIT 存储库支持,尽管 Microsoft 并未对此进行详细记录。您将无法使用 YAML 在 TFVC 中构建管道。虽然不是每个人都可以选择,但您可以考虑将 TFVC 项目转换为 GIT 存储库。

Azure DevOps TFVC to GIT Conversion

【讨论】:

【参考方案3】:

不确定这是否符合您的需求:您还可以从 git repo 运行管道并通过 powershell 任务和 REST 下载 tf vc 源代码(请参阅 Azure pipeline build bring TFVC project references into git build)。

对于 CI 触发器:

创建经典管道并适当配置 TFVC 触发器 通过 REST e 触发您的 yaml 管道。 G。在PowerShell中:
  $createReleaseBody = 
  @"
  
        "definition": 
            "id": $YamlPipelineId
        ,
        "sourceBranch": "$branch",
        "requestedFor": "$authorId",
        "parameters": " tfvcChangesetId: $(BUILD.SOURCEVERSION), YamlTriggerBuildId: $(Build.BuildId) ",
  
  "@

  $triggeredBuild = Invoke-RestMethod -Uri "https://*******.com/tfs/*****/_apis/build/builds?api-version=6.0" -Method post -Headers $AzureDevOpsAuthenicationHeader -Body $createReleaseBody -ContentType 'application/json'

  

YAML 管道:

创建一个仅包含管道代码(即 *.yml 文件)的 git 存储库 为您在 TFS 中的每个分支在 git 中创建一个分支(将使用上面的 powershell sn-p 触发该分支) 根据上面请求正文中的参数添加变量(在webui中) 使用给定的 $(tfvcChangesetId) 下载 TFVC 源 就我而言,TFVC 下载任务的功能不足以处理我们的复杂映射。因此,我使用了一个冗长的 powershell 脚本,它直接与 tf.exe 一起工作。

两年后的经验:

触发机制(经典 + REST)经验证,运行良好 在 yaml 管道中开发新功能很简单,而且效果很好 唯一的缺点:合并我们 10 多个分支机构的工作很烦人

提示:

根据您的 yaml 管道的结果,用“成功”、“失败”、“取消”标记经典构建 向您的 YAML 构建添加 Markdown 构建摘要,其中包含有关 TFVC 签入的详细信息 修改经典管道中显示的分支,使其更直观

【讨论】:

以上是关于如何使用 TFVC 使用 Yaml 创建构建管道?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure DevOps 上为发布服务器项目而不是客户端的 Blazor WebAssembly 托管应用程序创建构建管道?

Azure Devops 构建管道上的数据库项目失败

尝试构建库时出现 yaml-cpp 编译器错误

TFVC:在 vnext 构建期间删除工作区失败

TFVC api:如何获取文件属性(“可执行文件”和“符号链接”)

将代码推送回 Azure Devops 上的 TFVC 存储库