无法扩展变量“...”。检测到循环参考

问题描述 投票:0回答:2

我对天蓝色管道有疑问。我正在尝试创建一个模板,以便我可以推送多个实例,例如 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
azure-devops yaml azure-pipelines
2个回答
4
投票

您有循环引用。

- name: token_qa
  value: $(TOKEN_QA)

这就是说“定义一个名为

token_qa
的变量,并将值设置为
token_qa
变量的内容”。就另一种编程语言而言,就像在 C# 或 Java 中说
string foo = foo;

如果这些变量已在您的变量组中定义,则无需重新定义它们。


0
投票

刚刚在管道上收到相同的警告消息,其解决方案是:删除未使用的秘密变量

每个步骤都会显示此警告消息,但 YAML 管道中的任何位置都不再引用该变量。

© www.soinside.com 2019 - 2024. All rights reserved.