【发布时间】:2023-01-25 19:21:56
【问题描述】:
我已经为此苦苦思索了好几天。 基本上,这是我的设置:
- 我有一个分为 10-15 个阶段的主管道,您可以选择要运行的阶段。
- 所有阶段都依赖于 1 个 Powershell 阶段,该阶段执行一些工作并设置一些变量
- 每个阶段(Powershell 除外)调用一个模板,该模板调用另一个 BIG 模板(某些阶段可能调用相同的 BIG 模板或不同的模板)
- 我的问题在于“结帐”步骤:
- checkout: git://Project/${{parameters.RepositoryToCheckOut}}@$(Build.SourceBranch)
path: PathSpecified
分支变量和存储库变量都需要在某种程度上是动态的。
如果选择了两个或多个阶段,则会多次执行此步骤,从而在 Azure DevOps 上提示此错误:
An error occurred while loading the YAML build pipeline. An item with the same key has already been added.
我在一些文件上读到这是某种键/值问题,我不知道如何克服它。我想要避免从使用简单的 bash 步骤和手动签出,因为这些文件非常重要并且没有错误余地。
什么可以解决这个问题?
我尝试使用参数和编译时变量,但没有任何效果。我仍然有同样的错误。
【问题讨论】:
-
似乎没有必要多次检查回购协议。检查一次,做你需要做的事情,发布构建工件,然后在后续阶段使用你的工件。
-
问题是后续阶段与多个其他代理一起运行,因此结帐需要多次完成。无论如何,我们通过这样做解决了这个问题:
- checkout: git://ProjectName/${{parameters.RepositoryToCheckout}}@${{ variables['Build.SourceBranch'] }}
标签: git azure azure-devops azure-pipelines