我希望使用我的模板yml文件中内置的函数'eq‘访问管道库变量组中的“if”表达式中的变量(定义在管道库变量组中)。
MY_VARIABLE_GRP拥有key:SONARQUBE_OR_SONARCLOUD Value:'sonarqube‘
main.yml
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@templatesinclude-my-template.yml
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。
尝试了以下所有选项和所有打印错误:
# - 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')}}发布于 2021-03-01 03:24:42
变量组是在作业运行时授权的资源,只能在运行时表达式中使用。这个问题在这里已经有报道。
如果只希望在变量SONARQUBE_OR_SONARCLOUD为sonarqube时执行某些任务。您可以使用条件 (condition: eq(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube'))作为解决方法。见下文:
- powershell: echo "run this task when SONARQUBE_OR_SONARCLOUD is sonarqube"
condition: eq(variables['SONARQUBE_OR_SONARCLOUD'], 'sonarqube')也可以将SONARQUBE_OR_SONARCLOUD定义为运行时参数 (或变量部分)并传递给模板参数。见下文:
parameters:
- name: SONARQUBE_OR_SONARCLOUD
type: string
default: sonarqube
values:
- sonarqube
- sonarcloud
#or define in the variables section
#variables:
# SONARQUBE_OR_SONARCLOUD: sonarqube--
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}} --
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..https://stackoverflow.com/questions/66379568
复制相似问题