yaml文件中是否有条件?

时间:2019-01-15 07:06:38

标签: yaml

我需要根据if条件再添加一个名称。如果来自另一个.yml文件的变量值是“是”,则在列表中添加新名称

我的yaml文件中包含以下代码:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'

我需要根据if条件添加更多名称。如果来自另一个.yml文件的变量值为“是”,则添加一个新名称,如下所示:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'
 - name: 'new.js'

这可能吗?

尝试了以下内容:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'
 - | # Test multiline yaml support
   if [[ "site.data.settings.requiredjs" == "yes" ]]; then
     name: 'new.js'
   fi

我需要根据if条件添加更多名称。如果来自另一个.yml文件的变量值为“是”,则添加一个新名称,如下所示:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'
 - name: 'new.js'

4 个答案:

答案 0 :(得分:4)

作为Vaibhav响应的补充:尽管yml不固有地支持if语句,但是某些使用yml文件作为指令的应用程序可能能够解析yml中包含的if语句。 GitLab是一个著名的例子。在GitLab的CI / CD中,.gitlab-ci.yml文件可以配置为包含if语句,例如:

job:
  script: "echo Hello, Rules!"
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
      when: always
    - if: '$VAR =~ /pattern/'
      when: manual
    - when: on_success

这来自https://docs.gitlab.com/ee/ci/yaml/#rules

答案 1 :(得分:0)

您不能仅通过文本格式设置方式(而不是语言)向yml文件添加条件。 但是,您仍然可以将yml文件加载到编程语言中,并且可以将其应用于其他语言。基于字符串。

答案 2 :(得分:0)

尝试以下代码,“ item”一词可以是您想要的任何内容:

{% for item in JsNames %}
  {% if name == 'jquery.min.js' %}
    excute your code
  {% elif name == 'script.js' %}
    excute your code
  {% else %}
    excute your code
  {% endif %}
{% else %}
  some error message
{% endfor %}

答案 3 :(得分:0)

尝试一下

vartodefine: "{{ 'value1' if condition else 'value2' }}"