GitLab:如何在存在 yaml-checkers 的情况下使用 !reference 标签
GitLab: How to use !reference tag in the presence of yaml-checkers
我想在 GitLab 管道定义中使用 !reference
标签。
同时,我在 pre-commit
工具 (https://pre-commit.com/hooks.html) 中有像 check-yaml
这样的 yaml-checkers。例如,此检查器使用 ruamel.yaml
python 包来加载 yaml 文件。该包然后沿着 "无法确定标记的构造函数".
的行抱怨
是否可以在我的管道中包含标签的定义以满足检查员的要求?否则,这使得 !reference
标签无法在我的几个项目中使用。
我无法确定在gitlab中如何使用ruamel.yaml
,但是如果你能控制
ruamel.yaml.YAML()
实例是如何创建的,你应该确保它
使用默认的 typ
(通过不指定它),或等效的(`typ='rt')。
这将允许加载(和转储)任何有效的标签,而无需
需要指定构造函数。该标签可用于两个集合
类型(映射、序列)以及大多数标量。
import sys
import ruamel.yaml
yaml_str = """\
- !reference {a: 1, b: 2}
- !reference [1, 2, 3]
- !reference "abc"
- !reference 3.14
"""
yaml = ruamel.yaml.YAML(typ='rt')
data = yaml.load(yaml_str)
yaml.dump(data, sys.stdout)
给出:
- !reference {a: 1, b: 2}
- !reference [1, 2, 3]
- !reference "abc"
- !reference 3.14
!reference
是非标准扩展,因此您需要使用 --unsafe 选项
- id: check-yaml
args: [--unsafe]
我想在 GitLab 管道定义中使用 !reference
标签。
同时,我在 pre-commit
工具 (https://pre-commit.com/hooks.html) 中有像 check-yaml
这样的 yaml-checkers。例如,此检查器使用 ruamel.yaml
python 包来加载 yaml 文件。该包然后沿着 "无法确定标记的构造函数".
是否可以在我的管道中包含标签的定义以满足检查员的要求?否则,这使得 !reference
标签无法在我的几个项目中使用。
我无法确定在gitlab中如何使用ruamel.yaml
,但是如果你能控制
ruamel.yaml.YAML()
实例是如何创建的,你应该确保它
使用默认的 typ
(通过不指定它),或等效的(`typ='rt')。
这将允许加载(和转储)任何有效的标签,而无需
需要指定构造函数。该标签可用于两个集合
类型(映射、序列)以及大多数标量。
import sys
import ruamel.yaml
yaml_str = """\
- !reference {a: 1, b: 2}
- !reference [1, 2, 3]
- !reference "abc"
- !reference 3.14
"""
yaml = ruamel.yaml.YAML(typ='rt')
data = yaml.load(yaml_str)
yaml.dump(data, sys.stdout)
给出:
- !reference {a: 1, b: 2}
- !reference [1, 2, 3]
- !reference "abc"
- !reference 3.14
!reference
是非标准扩展,因此您需要使用 --unsafe 选项
- id: check-yaml
args: [--unsafe]