代码之家  ›  专栏  ›  技术社区  ›  VivekAnandChakravarthy

如何覆盖Azure devops管道中yaml的库变量值

  •  1
  • VivekAnandChakravarthy  · 技术社区  · 2 年前

    我在库中定义了变量组:

    enter image description here

    我试图在Azure DevOps YAML Pipeline的特定任务中覆盖上面库中定义的变量的值:

    trigger:
    - none
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
     - group: DevGroup
    
    steps:
    - script: |
       echo "##vso[task.setvariable variable=VanisJob;isoutput=true]FSDeveloper"
       echo $(VanisJob)
    
    - script: |
       echo $(VanisJob) is the 2nd Job
    

    后果 :

    第一个脚本结果

    enter image description here

    第二个脚本结果-此处的值应按照YAML管道中的定义进行更改,但未更改

    enter image description here

    1 回复  |  直到 2 年前
        1
  •  1
  •   Kevin Lu-MSFT    2 年前

    在您的yaml示例中,您使用logging命令来设置变量名: HarisJob .

    变量名称与“变量”组中的变量名称不同。

    在这种情况下,它将创建一个新变量(名称:HarisJob),而不是覆盖变量组中的变量值。

    为了解决这个问题,在使用日志记录命令设置变量时,需要在管道和变量组中设置相同的变量名。

    例如:

    pool:
      vmImage: ubuntu-latest
    
    variables:
     - group: DevGroup
    
    steps:
    - script: |
       echo "##vso[task.setvariable variable=VanisJob]FSDeveloper"
       echo "$(VanisJob)"
    
    - script: |
       echo "$(VanisJob) is the 2nd Job"
    

    结果:

    enter image description here

    注: 您需要删除 isoutput=真 在logging命令中,否则变量名将更改为 $(CMDLINE1.VANISJOB)

    例如:

    echo "##vso[task.setvariable variable=VanisJob]FSDeveloper"