Azure 管道变量默认值

Azure pipeline variable default values

我正在编写 azure 管道并使用来自变量组的变量。作为增加灵活性的一部分,我们正在尝试使管道的大部分部分可配置(更多变量)。所以,我一直在寻找一种方法来为变量添加默认值,如果它不存在于变量组中的话。

我们的使用方式如下:

variables:
  dockerId: $(docker_id)
  imageName: $(DOCKER_IMAGE_NAME)

如果没有从变量组中找到它,是否有选项可以为变量指定默认值。如下所示:

variables:
  dockerId: $(docker_id:"defaultDockerId")
  imageName: $(DOCKER_IMAGE_NAME:"defaultDockerImageName")

评论是正确的,你不能有默认值(除非你正在使用 templates and parameters,你可能想看看,但它们并不是你想要的)。如果您知道变量何时存在或不存在(在 yaml 文件中),您可以使用 if 条件,或者使用评论建议的脚本任务并计算脚本任务中的值并将其发回管道。

您无法在 Azure 管道中直接实现此目的。 Azure 管道目前没有此功能,并且不支持此语法 $(docker_id:"defaultDockerId")

作为解决方法,如果变量不存在,您可能必须在脚本任务中编写脚本来分配默认值。

请查看下面的 python 脚本:

第一个 python 脚本任务检查变量是否存在并为其设置默认值,并使用 print("##vso[task.setvariable variable=variableName]value").

定义变量

(请注意变量variableTest值只能在后面的任务中引用。)

- task: PythonScript@0
  displayName: 'setDefaultValue'
  inputs:
    scriptSource: inline
    script: |
     import os   

     b = os.getenv("variableTest","default value for variableTest")

     print("##vso[task.setvariable variable=variableTest]{b}".format(b=b))

- task: PythonScript@0    
  displayName: 'Run a Python script'    
  inputs:
    scriptSource: inline    
    script: |
        print("$(variableTest)")

希望以上内容对您有所帮助!