我在新管道上遇到问题,我正在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脚本后,我们还有其他运行良好的管道脚本,但是我的拒绝工作,我不知道为什么,我的同事也找不到。
任何帮助将不胜感激。
我在使用新管道时遇到问题,我正在Azure DevOps上为微服务设置,其中管道似乎无法引用由构建环境提供的环境变量。我...
想通了。我给我要使用的变量命名错误。