Azure Pipelines - 资源参考

问题描述 投票:0回答:1

我有一个复杂的管道,多个项目使用它进行集成测试。它在根 Yaml 中定义资源,并且在大多数情况下使用“签出”将相关存储库签出到测试代理,然后将其复制到测试主机并安装。然而,对于一个项目来说,由于存储库大小,这种方法会增加 20 - 30 分钟,因此决定将相关分支信息传递给测试主机,然后从那里执行 git pull。

一切工作正常,但我们注意到有 2 个字段正在输入分支信息,这导致了混乱。第一个是标准资源定义对话框被忽略,信息是从手动输入的文本字段输入的。由于这可能会导致错误,因此进行了更改以删除文本字段并传递所选资源的分支。然而,尝试引用被证明是有问题的

以下是根 yaml 的清理版本:

parameters:
  - name: resourceTypes
  ...
  - name: deployEXE
  ...

trigger: ...

resources:
  pipelines:
  - pipeline: ...
  repositories:
  - repository: TestData
    type: git
    name: testdata
    ref: refs/heads/master



extends:
  template: pipeline-template.yml
  parameters:
    jobName: 'Nightly Testing'
    testHost: 'VM Name'
    testTask: '.'
    deployExe: ${{parameters.deployExe}}
    checkoutTemplate: checkout-steps.yml
    postTestTemplate: post-test-steps.yml
    agentPool: test-agents
    agentName: VTMAGENT
    usesTemplate:
      repositories:
       - TestData
    hasOtherOutput: true
    timeoutInMinutes: 180
    additionalData: 
      - ${{parameters.resourceTypes}}
      - ${{resources.repositories.TestData.ref}}

底线是问题所在。 使用双括号 $

{{resources.repositories.TestData.ref}}
引用存储库会生成错误,指出
resources
是未知名称

使用单括号引用

$(resources.repositories.TestData.ref)
将其作为文字字符串传递,因此 git pull 尝试拉取名为
$(resources.repositories.TestData.ref)

的分支

是否可以引用repo信息并将其传递给模板?

azure-pipelines azure-pipelines-yaml
1个回答
0
投票

存储库资源的元数据以运行时变量的形式可供所有作业使用。

代替:

additionalData: 
  - ${{parameters.resourceTypes}}
  - ${{resources.repositories.TestData.ref}}

尝试

additionalData: 
  - ${{parameters.resourceTypes}}
  - $[ resources.repositories.TestData.ref ]

或者,作为替代方案:

variables:
  ref: $[ resources.repositories.TestData.ref ]

# .....
additionalData: 
  - ${{ parameters.resourceTypes }}
  - $(ref)

参见 resources.repositories.repository 定义理解变量语法

© www.soinside.com 2019 - 2024. All rights reserved.