我在使用新管道时遇到了问题,我正在Azure DevOps上为微服务设置,其中管道似乎无法引用构建环境提供的环境变量。
我在管道中执行了一个步骤,该步骤运行一个Powershell脚本,该脚本会打印出所有环境变量以用于调试目的,这使我可以确认该环境确实包含我要使用的变量。
这些变量是BUILD_DEFINITIONNAME = my-microservice-repo
和BUILD_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脚本后,我们还有其他运行良好的管道脚本,但是我的拒绝工作,我不知道为什么,我的同事也找不到。
任何帮助将不胜感激。
答案 0 :(得分:0)
弄清楚了。我在给我想使用的变量命名错误。
$(BUILD_BUILDNUMBER)
应该是$(Build.BuildNumber)
。