Как создать файл манифеста для выпуска, состоящего только из трех файлов сценариев yaml? - PullRequest
0 голосов
/ 15 марта 2019

Моя команда разрабатывает три довольно больших скрипта YAML, которые регулярно публикуются для публичного использования.

Мне нужно создать файл манифеста как способ контроля версий для выпусков этих скриптов.

Большинство форматов манифеста (приложения Windows, сборки, пакеты JAR и т. Д.) Следуют стандарту или шаблону, но я не думаю, что для моего сценария есть реализация по умолчанию, где опубликованный объект - это просто сценарии YAML.

Я подумываю о создании нового скрипта YAML с нуля, с парами метаданных ключ: значение об этом комплекте скриптов.

Что я думаю, указывает:

  • имя
  • номер версии
  • дата версии
  • создатель
  • файлов текущей версии
  • зависимости

Это почти все, что у меня есть, но кажется пустым.

Есть ли лучший подход для создания манифеста в этом сценарии?

Должен ли я рассмотреть альтернативный способ управления версиями этих выпусков?

1 Ответ

1 голос
/ 16 марта 2019

Вы можете прекрасно использовать 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. Вместо этого вы можете загрузить старый файл в виде текста , затем сбросить одну новую запись в файл, а затем добавить загруженный текст в этот вновь созданный файл.

...