首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从azure管道的库变量组中访问一个变量,该变量组位于模板中内置函数'eq‘的一侧

从azure管道的库变量组中访问一个变量,该变量组位于模板中内置函数'eq‘的一侧
EN

Stack Overflow用户
提问于 2021-02-26 03:09:34
回答 1查看 966关注 0票数 0

我希望使用我的模板yml文件中内置的函数'eq‘访问管道库变量组中的“if”表达式中的变量(定义在管道库变量组中)。

MY_VARIABLE_GRP拥有key:SONARQUBE_OR_SONARCLOUD Value:'sonarqube‘

main.yml

代码语言:javascript
复制
    resources:
      repositories:
        - repository: templates
          type: git
          name: MY_PROJECT/MY_TEMPLATE_REPO
stages:
  - stage: "Build"
    displayName: Build
    variables:
      - group: MY_VARIABLE_GRP
    jobs:
    - template: MODULE1/include-my-template.yml@templates

include-my-template.yml

代码语言:javascript
复制
jobs:
  - job: Build
    steps:
    - task: CmdLine@2
      inputs:
        script: |
          echo val: $(SONARQUBE_OR_SONARCLOUD) ##IT PRINTS 'sonarqube'
          echo SC: ${{eq(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube')}} ### Always returns fails  

    - ${{ if eq(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube') }}:
       - DO THIS..

根据ADO文档,“eq”将右参数转换为匹配左参数的类型。如果转换失败,则返回False。

尝试了以下所有选项和所有打印错误:

代码语言:javascript
复制
# - task: CmdLine@2
#   inputs:
#     script: |
#       echo val: $(SONARQUBE_OR_SONARCLOUD) ## PRINTS 'sonarqube'
#       echo SC: ${{eq(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube')}}  
#       echo SC: ${{contains(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube')}} 
#       echo SC: ${{eq('$SONARQUBE_OR_SONARCLOUD', 'sonarqube')}}  
#       echo SC: ${{eq('"$SONARQUBE_OR_SONARCLOUD"', 'sonarqube')}}
EN

回答 1

Stack Overflow用户

发布于 2021-03-01 03:24:42

变量组是在作业运行时授权的资源,只能在运行时表达式中使用。这个问题在这里已经有报道。

如果只希望在变量SONARQUBE_OR_SONARCLOUDsonarqube时执行某些任务。您可以使用条件 (condition: eq(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube'))作为解决方法。见下文:

代码语言:javascript
复制
- powershell: echo "run this task when SONARQUBE_OR_SONARCLOUD is sonarqube"
  condition: eq(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube')

也可以将SONARQUBE_OR_SONARCLOUD定义为运行时参数 (或变量部分)并传递给模板参数。见下文:

代码语言:javascript
复制
parameters:
- name: SONARQUBE_OR_SONARCLOUD
  type: string
  default: sonarqube
  values:
  - sonarqube
  - sonarcloud

#or define in the variables section
#variables:
#  SONARQUBE_OR_SONARCLOUD: sonarqube

--

代码语言:javascript
复制
jobs:
    - template: MODULE1/include-my-template.yml@templates
      parameters:
       SONARQUBE_OR_SONARCLOUD: ${{parameters.SONARQUBE_OR_SONARCLOUD}} 
       #define in the variables section
       #SONARQUBE_OR_SONARCLOUD: ${{variables.SONARQUBE_OR_SONARCLOUD}} 

--

代码语言:javascript
复制
  parameters:
    SONARQUBE_OR_SONARCLOUD: ""
    
  jobs:
  - job: Build
    steps:
    - task: CmdLine@2
      inputs:
        script: |
          echo val: $(SONARQUBE_OR_SONARCLOUD) ##IT PRINTS 'sonarqube'
          echo SC: ${{eq(parameters.SONARQUBE_OR_SONARCLOUD, 'sonarqube')}} ### Always returns fails  

    - ${{ if eq(parameters.SONARQUBE_OR_SONARCLOUD, 'sonarqube') }}:
       - DO THIS..
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66379568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档