如何为仅包含三个 yaml 脚本文件的版本构建清单文件?
How to build a manifest file for a release consisting of only three yaml script files?
我的团队正在开发三个相当大的 YAML 脚本,这些脚本会定期发布以供 public 使用。
我需要创建一个清单文件作为这些脚本版本的版本控制方式。
大多数清单格式(windows 应用程序、程序集、jar 包等)都遵循标准或模板,但我不认为我的场景有默认实现,其中已发布对象只是 YAML 脚本。
我正在考虑从头开始创建一个新的 YAML 脚本,其中包含关于这组脚本的元数据的键值对。
我想指定的是:
- 姓名
- 版本号
- 版本日期
- 创作者
- 当前版本的文件
- 依赖关系
我几乎只有这些,但似乎是空的。
在这种情况下是否有构建清单的最佳方法?
我是否应该考虑使用替代方法来控制这些版本?
您完全可以使用 YAML 制作清单文件,并且可以将项目符号项用作表示每个版本的映射的键值对。
但是,您应该考虑如何将发布放在一起,因为除非您使用序列,否则可能无法保证或有用的方式来对清单中的发布进行排序。
在下文中,我假设您希望遵循将最新版本放在清单文件顶部的通常模式。
如果您决定使用版本日期作为根级映射的键:
2019-03-14:
name: new-name
version: [0, 2, 0]
2019-02-28:
name: some_name
version : [0, 1, 0]
您会发现对于大多数 YAML 库来说插入一个
映射开头的新密钥(一个例外是我的 ruamel.yaml
库用于 Python)。这种形式排除了多次发布
在某一天,这可能会在未来的某一天出现问题。
如果您决定使用版本号作为密钥:
[0, 2, 0]:
name: new-name
date: 2019-03-04
[0, 1, 0]:
name: some_name
date : 2019-02-28
您可能会发现某些 YAML 库无法处理此类密钥。将它们更改为 0.2.0
之类的字符串可能会使您在对键进行排序时遇到更大的麻烦,一旦某些数字开始为两位数
完成此操作的最简单方法可能是使用根级序列,这样插入和排序在您添加版本的每个往返行程中都是完全可控的:
- name: new-name
version: [0, 2, 0]
date: 2019-03-04
- name: some_name
version: [0, 1, 0]
date : 2019-02-28
如果您的发布直接在根级别下,通常不需要完全加载-更新-写入发布 YAML 文件。相反,您可以将旧文件 作为文本 加载,然后将单个新条目转储到文件,然后将加载的文本附加到新创建的文件中。
我的团队正在开发三个相当大的 YAML 脚本,这些脚本会定期发布以供 public 使用。
我需要创建一个清单文件作为这些脚本版本的版本控制方式。
大多数清单格式(windows 应用程序、程序集、jar 包等)都遵循标准或模板,但我不认为我的场景有默认实现,其中已发布对象只是 YAML 脚本。
我正在考虑从头开始创建一个新的 YAML 脚本,其中包含关于这组脚本的元数据的键值对。
我想指定的是:
- 姓名
- 版本号
- 版本日期
- 创作者
- 当前版本的文件
- 依赖关系
我几乎只有这些,但似乎是空的。
在这种情况下是否有构建清单的最佳方法?
我是否应该考虑使用替代方法来控制这些版本?
您完全可以使用 YAML 制作清单文件,并且可以将项目符号项用作表示每个版本的映射的键值对。
但是,您应该考虑如何将发布放在一起,因为除非您使用序列,否则可能无法保证或有用的方式来对清单中的发布进行排序。
在下文中,我假设您希望遵循将最新版本放在清单文件顶部的通常模式。
如果您决定使用版本日期作为根级映射的键:
2019-03-14: name: new-name version: [0, 2, 0] 2019-02-28: name: some_name version : [0, 1, 0]
您会发现对于大多数 YAML 库来说插入一个 映射开头的新密钥(一个例外是我的
ruamel.yaml
库用于 Python)。这种形式排除了多次发布 在某一天,这可能会在未来的某一天出现问题。如果您决定使用版本号作为密钥:
[0, 2, 0]: name: new-name date: 2019-03-04 [0, 1, 0]: name: some_name date : 2019-02-28
您可能会发现某些 YAML 库无法处理此类密钥。将它们更改为
0.2.0
之类的字符串可能会使您在对键进行排序时遇到更大的麻烦,一旦某些数字开始为两位数
完成此操作的最简单方法可能是使用根级序列,这样插入和排序在您添加版本的每个往返行程中都是完全可控的:
- name: new-name
version: [0, 2, 0]
date: 2019-03-04
- name: some_name
version: [0, 1, 0]
date : 2019-02-28
如果您的发布直接在根级别下,通常不需要完全加载-更新-写入发布 YAML 文件。相反,您可以将旧文件 作为文本 加载,然后将单个新条目转储到文件,然后将加载的文本附加到新创建的文件中。