azure-devops - 将管道变量从设计器传递到 YAML 作业模板

标签 azure-devops azure-pipelines

我最初想在我的 azure-pipelines.yml 中定义管道变量我可以选择在排队时间设置,但目前似乎不支持:可以在排队时间设置的变量只能在设计器中定义。这个变量(逗号分隔)被命名为 nx_versions并将用于构建矩阵策略。这是一个最小的例子:

# azure-pipelines.yml
jobs:
- template: job-template.yml
  parameters:
    nx_versions: $(nx_versions)


# job-template.yml
parameters:
  nx_versions: 
    - 1

jobs:
  - job: build
    strategy:
      matrix:
        ${{ each nxver in parameters.nx_versions }}:
          NX_${{ nxver }}:
            NXVersion: ${{ nxver }}
    steps:
      - powershell: echo $(NXVersion)

使用 nx_versions = 2,3 排队构建(值实际上并不重要)导致错误:
/job-template.yml (Line: 9, Col: 9): Expected a sequence or mapping. Actual value '$(nx_versions)'

这甚至可能吗?我也尝试使用 ${{ nx_versions }}${{ variables.nx_versions }}无济于事。

这可以通过完整的 Designer 解决方案实现。

最佳答案

琐碎的管道(不引用模板,但可以轻松扩展以这样做)

parameters:
- name: nx_versions
  type: object
  default: 
  - 1
  - 4

jobs:
  - job: build
    strategy:
      matrix:
        ${{ each nxver in parameters.nx_versions }}:
          NX_${{ nxver }}:
            NXVersion: ${{ nxver }}
    steps:
      - powershell: echo $(NXVersion)
扩展到
parameters:
- name: nx_versions
  type: object
  default:
  - 1
  - 4
stages:
- stage: __default
  jobs:
  - job: build
    strategy:
      matrix:
        NX_1:
          NXVersion: 1
        NX_4:
          NXVersion: 4
    steps:
    - task: PowerShell@2
      inputs:
        targetType: inline
        script: echo $(NXVersion)
如果您为此排队构建,您将获得一个带有默认值的参数页面:
Defaults
您可以覆盖:
Override parameters
这导致:
Overridden job result

关于azure-devops - 将管道变量从设计器传递到 YAML 作业模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228903/

相关文章:

azure-devops - 构建失败时在不同的项目中创建错误

Azure PowerShell - Invoke-AzContainerInstanceCommand - 术语 'processÂ' 未被识别为 cmdlet 的名称

Azure DevOPS - 当您被分配工作项时收到通知

azure - 在 azure 管道的阶段之间传递变量?

azure - 如何在 Azure DevOps/GitHub 中设置 PR 验证?

visual-studio - 在Visual Studio Online中,是否可以设置触发器,以在成功完成拉取请求合并时更改将工作项分配给谁?

Opshub 从 TFS 迁移到 VSTS 不映射用户

azure - 通过 Azure DevOps Pipeline 对 Azure DevOps REST API 进行 token 身份验证(而不是 PAT token )

azure - 多级管道未按预期工作

azure - 如何运行已经部署到azure应用程序服务容器的?