我对天蓝色管道有疑问。我正在尝试创建一个模板,以便我可以推送多个实例,例如 dev 和 qa。由于 Azure 不支持在模板中使用变量组,因此我使用参数将它们传递给模板。问题是我收到此错误:
##[警告]无法扩展变量“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;
。
如果这些变量已在您的变量组中定义,则无需重新定义它们。
刚刚在管道上收到相同的警告消息,其解决方案是:删除未使用的秘密变量
每个步骤都会显示此警告消息,但 YAML 管道中的任何位置都不再引用该变量。