1

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

似乎没有发生一些变量替换,我只是不知道为什么它一定很简单,但我就是找不到

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:

我得到的错误

在此处输入图像描述

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

4

1 回答 1

1

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

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

队列时间变量不会覆盖默认变量

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

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

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

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

在此处输入图像描述

希望这可以帮助。

于 2020-05-11T03:59:17.600 回答