如何为仅包含三个Yaml脚本文件的发行版构建清单文件?

时间:2019-03-15 20:34:53

标签: version-control yaml manifest

我的团队正在开发三个相当大的YAML脚本,这些脚本会定期发布以供公众使用。

我需要创建一个清单文件,作为这些脚本的发行版的版本控制方式。

大多数清单格式(Windows应用程序,程序集,jar包等)都遵循标准或模板,但我认为我的方案没有默认的实现,其中已发布的对象只是YAML脚本。

我正在考虑从头开始创建一个新的YAML脚本,其键为:与该脚本捆绑有关的元数据值对。

我在想什么:

  • 名称
  • 版本号
  • 版本日期
  • 创作者
  • 当前版本上的文件
  • 依赖项

这几乎是我所拥有的,但这似乎是空的。

在这种情况下,是否有最佳的方法来构建清单?

我应该考虑一种替代方法来控制这些发行版吗?

1 个答案:

答案 0 :(得分:1)

您可以很好地使用YAML来创建清单文件,并且可以将项目符号项用作表示每个版本的映射的键值对。

但是,您应该考虑如何将发布放在一起,因为除非使用序列,否则可能无法保证或有用地在清单中对发布进行排序。

在下文中,我假设您要遵循清单文件顶部具有最新版本的通常模式。

  • 如果您决定使用版本日期作为根级映射的键:

    2019-03-14:
      name: new-name
      version: [0, 2, 0]
    2019-02-28:
      name: some_name
      version : [0, 1, 0]
    

    您会发现,对于大多数YAML库来说,插入一个 映射开始处的新键(我的Python ruamel.yaml库除外)。这种形式排除了多个版本 在一天之内,将来可能会出现问题。

  • 如果您决定使用版本号作为密钥:

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