使用模板天蓝色管道时不会发生变量替换

variable replacement not happening when using templates azure pipelines

所以我正在尝试将一个参数提交到我的模板部署中,但不确定其他参数按预期工作有什么问题只是新参数不起作用,但如果我将其设置为不带参数的布尔值它有效。

似乎有一些变量替换没有发生,我只是想不通为什么它必须是简单的东西,但我就是找不到它

usek8s 没用,图片来自变量选项卡

来自 azure 的代码段-pipelines.yml 当它不起作用时

  - template: yml/pipeline-templates/deployment.yaml@parent
    parameters:
    usek8s: $(usek8s)
    stageId: Deploy_Dev
    vmImage: $(vmVersion)
    environment: 'dev'
    targetBranch: 'master'
    namespace: $(k8sNamespace)
    imagePullSecret: $(imagePullSecret)
    containerRegistry: $(dockerRegistryServiceConnection)
    tag: $(tag)
    imageRepository: $(imageRepository)
    kubernetesServiceConnection: $(k8sConnectionDev)
    dependsOn: Build_Docker_Deventer

来自 azure-pipelines.yml 的片段

  - template: yml/pipeline-templates/deployment.yaml@parent
    parameters:
    usek8s: false
    stageId: Deploy_Dev
    vmImage: $(vmVersion)
    environment: 'dev'
    targetBranch: 'master'
    namespace: $(k8sNamespace)
    imagePullSecret: $(imagePullSecret)
    containerRegistry: $(dockerRegistryServiceConnection)
    tag: $(tag)
    imageRepository: $(imageRepository)
    kubernetesServiceConnection: $(k8sConnectionDev)
    dependsOn: Build_Docker_Deventer

来自父模板的片段

    parameters:
    - name: usek8s
      displayName: 'Use k8s deploy process?'
      type: boolean
      default: false
    - name: stageId
    - name: vmImage
    - name: targetBranch
    - name: environment
    - name: namespace
    - name: imagePullSecret
    - name: containerRegistry
    - name: tag
    - name: imageRepository
    - name: kubernetesServiceConnection
    - name: dependsOn
      default: []
stages:
- stage: ${{ parameters.stageId }}
  displayName: '${{ parameters.stageId }}'
  dependsOn: ${{ parameters.dependsOn }}
  condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/heads/${{ parameters.targetBranch }}'), eq(${{ parameters.usek8s }}, true))
  jobs:

我收到错误

如果我删除布尔数据类型并仅 运行 它的名称,我只会在条件行中得到相同类型的错误

variable replacement not happening when using templates azure pipelines

这是一个已知问题,已报告给 MS 团队。您可以查看以下线程以了解一些详细信息:

Queue Time Variables Do Not Override Default Variable

那是因为我们不能使用队列变量来覆盖编译时参数。

因此,MS 团队最近推出了一项新功能 Runtime parameters,允许您将数据注入流水线编译的预处理器阶段:

参数: - 名称:usek8s 显示名称:UseUsek8s? 类型:布尔值 默认值:假

当我们对管道进行排队时,如果我们使用 usek8s:

我们可以 select

希望对您有所帮助。