如何使用 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 托管应用程序创建构建管道?