无法展开可变'...'。检测到循环引用



我对azure管道有一个问题。我试图创建一个模板,这样我就可以推动多个实例,如开发和质量保证。由于Azure不支持在模板中使用变量组,所以我使用参数将它们传递给模板。问题是,我得到这个错误:

##[warning]无法展开变量TOKEN_QA。循环引用检测。

有什么办法解决这个问题吗?

name: ...
trigger: none
variables:
- group: api-mgmt-...-qa
- name: token_qa
value: $(TOKEN_QA)
- name: project_qa
value: $(PROJECT_ID_QA)
- group: api-mgmt-...-dev
- name: token_dev
value: $(TOKEN_DEV)
- name: project_dev
value: $(PROJECT_ID_DEV)

pool:
name: '...'
vmImage: ubuntu-latest
stages:
- stage: "DEV_Deploy"
dependsOn: []
jobs:
- template: ./api-publish_deployment.yml
parameters:
env: "dev"
token: ${{variables.token_dev}}
project: ${{variables.project_dev}}
- stage: "QA_Deploy"
dependsOn: 
- "DEV_Deploy"
jobs:
- template: ./api-publish_deployment.yml
parameters:
env: "qa"
token: ${{variables.token_qa}}
project: ${{variables.project_qa}}

parameters:
- name: env
type: string
values:
- dev
- qa
- name: token
type: string
- name: project
type: string

jobs:
- job: Publish_Api
displayName: Publish API on ${{parameters.env}}
steps:
- checkout: self
path: $(Build.Repository.Name)
- task: GoTool@0
displayName: Install Go $(goVersion)
inputs:
version: '1.19'
- task: Bash@3
displayName: Publish API
env:
IDENTIFIER: ...
BASEURL: ...
PROJECT: ${{ parameters.project }}
STAGE: ${{ parameters.env }}
TOKEN: ${{ parameters.token }}
inputs:
targetType: 'inline'
script: |
echo $IDENTIFIER $BASEURL $PROJECT $STAGE
stackit-api-manager project publish 
--identifier $IDENTIFIER 
--baseURL $BASEURL 
--project $PROJECT 
--stage $STAGE 
--token $TOKEN 
--oas config/... .yml
- script: go clean -modcache
displayName: Cleanup Go mod folder

你有循环引用

- name: token_qa
value: $(TOKEN_QA)

这是说"定义一个名为token_qa的变量,其值设置为token_qa变量的内容"。在另一种编程语言中,这就像在c#或Java中说string foo = foo;

如果这些变量是在你的变量组中定义的,你不需要重新定义它们。

最新更新