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

时间:2020-05-08 06:35:42

标签: yaml azure-pipelines azure-pipelines-yaml

因此,我正在尝试向模板部署中提交参数,不确定是什么问题,其他参数是否按预期工作只是新的不起作用,但是如果我将其设置为不带参数的布尔值,那么它将起作用

似乎没有发生som变量替换,我只是想不出为什么它一定很简单,但是我找不到它

usek8s无效,来自变量标签的图像

enter image description here

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:

我得到的错误

enter image description here

如果我删除布尔数据类型并仅使用名称运行它,则仅在条件行中会出现相同类型的错误 enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

Queue Time Variables Do Not Override Default Variable

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

因此,MS团队最近推出了一项新功能Runtime parameters,可让您将数据注入到管道编译的预处理阶段:

参数: -名称:usek8s displayName:UseUsek8s? 类型:布尔值 默认值:False

当我们在管道中排队时,我们可以选择是否使用usek8s

enter image description here

希望这会有所帮助。