首页 > 解决方案 > 如何对 yaml 进行 lint 并忽略多个“depends_on”?

问题描述

我编写了一个使用 docker-compose.yml 文件创建本地开发环境的脚本。

运行脚本时,我想在升级环境之前使用 yaml linter 命令来验证文件是否是有效的 yaml,为此我使用了 yamlint 命令。

在这个 docker-compose.yml 文件中,有多个服务“依赖于”另一个服务,但是当我运行 yamllint 时,它返回以下错误:

47:5      error    duplication of key "depends_on" in mapping  (key-duplicates)

这不是一个真正的错误,但由于 lint 是脚本运行的一部分,所以我不能指望它的退出代码,因为它将此错误视为错误,而实际上并非如此。

docker-compose.yml 文件的示例部分:

  microservice-one:
    image: ms-one:feature-local_development_env
    environment:
      NODE_ENV: 'development'
      NPM_TOKEN: 'SECRET'
    ports:
      - "3013:3000"
    depends_on:
      - redis-cluster
  microservice-two:
    image: ms-two:feature-local_development_env
    environment:
      NODE_ENV: 'development'
      NPM_TOKEN: 'SECRET'
    ports:
      - "3014:3000"
    depends_on:
      - redis-cluster
networks:
  default:

是否有任何其他您知道的命令行 yaml linter 不会将多个“depends_on”计为错误?

标签: yamllint

解决方案


我找到了答案,并认为我会与到达这里的人分享。

所以解决方法是通过创建特定的 yamllint 配置文件来覆盖 yamllint 的默认配置。

就我而言,该文件如下所示:

extends: default

rules:
  key-duplicates: disable

然后,我像这样运行命令:

yamllint -d config_file docker-compose.yml

更多选项可以在yamlint 的官方文档页面中找到,


推荐阅读