【问题标题】:Azure pipeline variable default valuesAzure 管道变量默认值
【发布时间】:2020-04-07 05:25:57
【问题描述】:

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

我们的使用方式如下:

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

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

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

【问题讨论】:

  • 我不认为你可以这样做,但你实际上可以做的是在任务中创建变量。因此,您可以有一些 powershell 或 bash 任务来创建变量(如果它们不存在)
  • 谢谢卡洛斯。我一直在寻找 python os.getenv("variable","default") 类型的语法,这使得工作变得非常容易,而不是为每个变量添加检查并在它不存在时创建它。
  • 你可以在一个任务中建立这种体验..你甚至可以在 python 中做到这一点:) 我仍然建议在其他地方使用默认值,也许是一个模板文件,以及一个需要它的任务模板文件并执行您的 getenv("variable", "default)
  • 嗨@SunilSaggar 正如上面评论的那样,您可能必须在脚本任务中执行此操作或使用模板。您可以查看以下答案中的示例。

标签: azure-devops azure-pipelines azure-pipelines-build-task


【解决方案1】:

您无法直接在 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)")

希望以上有帮助!

【讨论】:

  • 这样更好..!!谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2019-11-05
    • 2012-06-25
    • 1970-01-01
    相关资源
    最近更新 更多