Azure DevOps管道无法在运行时扩展任何环境变量

时间:2020-05-19 15:55:51

标签: azure-devops continuous-integration

我在使用新管道时遇到了问题,我正在Azure DevOps上为微服务设置,其中管道似乎无法引用构建环境提供的环境变量。

我在管道中执行了一个步骤,该步骤运行一个Powershell脚本,该脚本会打印出所有环境变量以用于调试目的,这使我可以确认该环境确实包含我要使用的变量。

这些变量是BUILD_DEFINITIONNAME = my-microservice-repoBUILD_BUILDNUMBER = 20200519.2。本质上,我想结合这两个变量来创建另一个变量来命名我的docker容器,因此我将拥有一个等于$(BUILD_DEFINITIONNAME):$(BUILD_BUILDNUMBER)的变量,应该应扩展为my-microservice-repo:20200519.2。我们将这个变量称为imageName。我在.yml脚本的变量部分中将其定义为

variables:
  - name: imageName
    value: $(BUILD_DEFINITIONNAME):$(BUILD_BUILDNUMBER)

但是,如果我尝试在Docker步骤中使用此变量:

    - task: Docker@0
      inputs:
        dockerFile: Dockerfile
        azureSubscriptionEndpoint: 'endpoint'
        azureContainerRegistry: 'my container registry'
        imageName: $(imageName)
        action: 'Build an image'

    - task: Docker@0
      inputs:
        azureSubscriptionEndpoint: 'endpoint'
        azureContainerRegistry: 'my container registry'
        action: 'Push an image'
        imageName: $(imageName)

然后,当脚本运行时,出现以下错误:##[error]invalid argument "myazurecontainerregistry.azurecr.io/$(build_definitionname):$(build_buildnumber)" for "-t, --tag" flag: invalid reference format

很明显,自从我得到$(build_definitionname):$(build_buildnumber)以来,它正确地连接了字符串,但是,尽管它们都存在于我前面提到的打印变量中,但它们并没有被扩展。

是否需要做一些特殊的事情以允许在脚本中使用环境变量?我复制了yml脚本后,我们还有其他运行良好的管道脚本,但是我的拒绝工作,我不知道为什么,我的同事也找不到。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

弄清楚了。我在给我想使用的变量命名错误。

$(BUILD_BUILDNUMBER)应该是$(Build.BuildNumber)