如何为仅包含三个 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 文件。相反,您可以将旧文件 作为文本 加载,然后将单个新条目转储到文件,然后将加载的文本附加到新创建的文件中。