无法在管道中多次检出同一存储库

2024-04-10

我在多个环境中拥有自托管代理,我试图在这些环境上运行相同的构建/部署进程。我希望能够将相同的代码从单个存储库同时部署到多个系统。因此,我创建了一个“开销”管道和几个“流程”管道模板。一切似乎都进展顺利,除了当我尝试在同一管道执行中两次执行同​​一存储库的签出时除外。我收到以下错误:

加载 YAML 构建管道时发生错误。已添加具有相同密钥的项目。

我真的希望能够只需单击一个按钮即可触发一个主管道,该管道调用所需的所有模板并提供立即完成所有工作所需的参数。我当然可以定义这个“开销”管道,然后根据需要部署到的每个系统对所需数量的实例进行排队,但我很懒,因此我使用管道!

一旦我从 Common.yml 中删除签出,验证就会成功,没有任何问题。如果我将签出保留在那里,但仅对整个开销管道调用一次 Common.yml,那么它也会成功,没有任何问题。但问题是:我需要将存储库的内容拉到我的每个代理中,这些代理在完全独立的环境中运行,这些环境永远无法相互通信(无法将信息拉到一个代理并拥有它对所有其他代理位置进行某种“复制”......)。

非常欢迎任何帮助,谢谢!

以下是我的“开销”管道:

# azure-pipelines.yml
trigger:
  none

parameters:
  - name: vLAN
    type: string
    default: 851
    values:
      - 851
      - 1105
  
stages: 
  - stage: vLAN851
    condition: eq('${{ parameters.vLAN }}', '851')
    pool:
      name: xxxxx
      demands:
      - vLAN -equals 851
    jobs:
    - job: Common_851
      steps:
      - template: Procedures/Common.yml
    - job: Export_851
      dependsOn: Common_851
      steps:
      - template: Procedures/Export.yml
        parameters:
          Server: ABTS-01
  - stage: vLAN1105
    condition: eq('${{ parameters.vLAN }}', '1105')
    pool:
      name: xxxxx
      demands:
      - vLAN -equals 1105
    jobs:
    - job: Common_1105
      steps:
      - template: Procedures/Common.yml
    - job: Export_1105
      dependsOn: Common_1105
      steps:
      - template: Procedures/Export.yml
        parameters:
          Server: OTS-01

这是“Procedures/Common.yml”:

steps:
- checkout: git://xxxxx/yyyyy@$(Build.SourceBranchName)
  clean: true
  enabled: true
  timeoutInMinutes: 1
- task: UsePythonVersion@0
  enabled: true
  timeoutInMinutes: 1
  displayName: Select correct version of Python
  inputs:
    versionSpec: '3.8'
    addToPath: true
    architecture: 'x64'
- task: CmdLine@2
  enabled: true
  timeoutInMinutes: 5
  displayName: Ensure Python Requirements Installed
  inputs:
    script: |
      python -m pip install GitPython

这是“Procedures/Export.yml”:

parameters:
  - name: Server
    type: string

steps:    
- task: PythonScript@0
  enabled: true
  timeoutInMinutes: 3
  displayName: xxxxx
  inputs:
    arguments: --name "xxxxx" --mode True --Server ${{ parameters.Server }}
    scriptSource: 'filePath'
    scriptPath: 'xxxxx/main.py'  

我设法使用可变分支名称进行结帐工作模板表达式变量${{ ... }}代替宏语法 $(...)变量。

不同之处在于,模板表达式在编译时处理,而宏在运行时处理。

所以就我而言,我有这样的事情:

- checkout: git://xxx/yyy@${{ variables.BRANCH_NAME }}

有关变量语法的更多信息:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在管道中多次检出同一存储库 的相关文章

随机推荐

  • 检查字符串类型是否为字符串

    我希望解析关键字参数以确定它们是否也引用类型 例如下面的情况 from inspect import isclass def convert converting kwargs for key value in kwargs items i
  • 如何快速禁用和启用自动旋转?

    在一般设置中 我允许纵向和横向左 横向右模式 我想关闭横向模式 在 viewController 上我写了这段代码 override func shouldAutorotate gt Bool return false 但是 自动旋转会忽略
  • 如何通过 Facebook Graph Api 获取用户的朋友在生日当天在用户墙上发布的帖子?

    我正在尝试构建一个 Chrome 扩展程序 我想获取人们专门在用户生日那天发布在用户墙上的所有帖子 我尝试通过 Facebook Javascript SDK 进行调用 但它没有返回我的朋友在生日那天发布的帖子 FB api me feed
  • 使用 Owin.Testing 时获取远程 ip

    我使用 Owin Testing 作为测试环境 在我的控制器中 我需要从调用者那里获取远程 IP 地址 in my controller method var ip GetIp Request Util private string Get
  • Java mp4parser片段序列不连续性

    此用例是一项服务 手动将一系列未压缩的 wav 媒体片段编码为 m4s 片段 以便通过 MPEG DASH 广播 使用 ffmpeg 将 wav 压缩为 aac 并使用 sannies mp4parser 将 aac 音频组装为 m4s 片
  • Mocha 如何知道在测试套件中首先加载哪个文件

    我正在尝试学习 MongodB 的测试驱动方法 文件夹结构 A user js在src文件夹中测试 const mongoose require mongoose mongoose Promise require bluebird cons
  • 异常信息:System.Reflection.TargetInitationException

    我正在开发 WPF 应用程序 仅在单个设备上运行时收到此错误 Exception Info System Reflection TargetInvocationException 我的问题 有什么线索可能导致此错误吗 知道如何在发布模式下调
  • 核心数据同步

    有没有办法自动将我的核心数据模型与服务器同步 最好是 REST Thanks 苹果已经分享了他们的同步服务框架 记录如下 http developer apple com documentation Cocoa Conceptual Syn
  • 了解 C++ 内存模型:不同运行时的不同值

    下面的代码有什么问题 我预计消费者 1 和消费者 2 会生成 10 个 但有时会看到 1 include
  • 画布和输入映射

    我正在用 Java 构建一个 2d 游戏 我决定使用 Canvas 在上面显示与当前帧相关的图像 我使用 Canvas 是因为我听说它在时间方面比 JPanel 更高效 这是真的吗 另外 我想通过以下方式向游戏添加一些输入键绑定因为关键听众
  • 在迭代器上使用 map()

    假设我们有一张地图 let m new Map using m values 返回一个地图迭代器 但我不能使用forEach or map 在该迭代器上并在该迭代器上实现 while 循环似乎是一种反模式 因为 ES6 提供了类似的函数ma
  • 如何使用 Caliburn.Micro 将源 MediaCapture 绑定到 CaptureElement?

    在 Windows Phone 8 1 上 我使用 Caliburn Micro 视图模型优先方法 但由于视图模型无法了解视图的任何信息 因此我看不到如何将 MediaCapture 对象绑定到视图中的 CaptureElement 我有同
  • Flutter pub get 执行时间太长

    当在 Vscode 中运行新应用程序 flutter pub get 时 它会持续运行但未完成 我尝试过 flutter clean 然后重新打开 vscode Try 扑干净命令 同时删除pubspec lock然后将文件放在根目录中re
  • 使用 Python/(GAE) 为 Android 应用程序推送通知的服务器端实现 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 从哪里 有用的链接 开始 我需要基础
  • Perl 6 可以根据排序规则进行排序或比较吗?

    The cmp操作员 https docs perl6 org language operators infix cmp适用于代码编号 或者至少我认为它是这样做的 因为文档对此没有明确说明 并且没有提及任何本地化内容 我可以按照其他排序规则
  • “扁平比嵌套更好”——对于数据和代码? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 This https stackoverflow com questions 4372073 traversing and modifying
  • s3fs 将 Amazon S3 存储桶挂载为本地目录的稳定性如何 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 s3fs 在 Linux 中将 Amazon S3 存储桶挂载为本地目录的稳定性如何 对于高要求的生产环境是否推荐 稳定 有更好 类似的解决方案
  • 更改 Firefox 拼写检查默认语言

    Firefox 开始相信我的默认拼写检查语言应该是西班牙语 我的全球偏好选择了英语 首选项 gt 内容 gt 语言 gt 英语 en 我可以通过以下方式逐页重置拼写检查器语言 右键单击 gt 语言 gt 英语 美国 但是 对于新打开的页面或
  • 如何修复 Jackson java 8 数据/时间错误?

    Java 8 date time type java time LocalDateTime not supported by default add Module com fasterxml jackson datatype jackson
  • 无法在管道中多次检出同一存储库

    我在多个环境中拥有自托管代理 我试图在这些环境上运行相同的构建 部署进程 我希望能够将相同的代码从单个存储库同时部署到多个系统 因此 我创建了一个 开销 管道和几个 流程 管道模板 一切似乎都进展顺利 除了当我尝试在同一管道执行中两次执行同