【问题标题】:variable replacement not happening when using templates azure pipelines使用模板天蓝色管道时不会发生变量替换
【发布时间】:2020-08-23 16:06:34
【问题描述】:

所以我正在尝试将参数提交到我的模板部署中,但不确定其他参数是否按预期工作只是新参数不起作用,但如果我将其设置为不带参数的布尔值,则它可以工作.

似乎没有发生 som 变量替换,我只是无法弄清楚为什么它一定很简单,但我就是找不到它

usek8s 不起作用,来自变量选项卡的图像

当它不起作用时来自 azure-pipelines.yml 的 sn-p

  - 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 中的 sn-p 工作时

  - 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

来自父模板的sn-p

    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:

我得到的错误

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

【问题讨论】:

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


    【解决方案1】:

    使用模板 azure 管道时不会发生变量替换

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

    Queue Time Variables Do Not Override Default Variable

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

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

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

    当我们对管道进行排队时,我们可以选择是否使用usek8s

    希望这会有所帮助。

    【讨论】:

    • 这是一个解决方案,但在计划修复此问题时是否有更多信息? :)
    • @Kladfizk,您还想了解哪些信息? AFAIK,MS 团队没有为此问题提供太多额外信息。
    • 因为其余的是变量而不是参数,所以有些需要是参数而不是变量是很奇怪的。不觉得它按预期工作,可能只是我错过了一些东西
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 2021-05-25
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 2023-03-13
    • 2020-05-19
    相关资源
    最近更新 更多