Я думаю, что для каждого приложения / библиотеки хорошей практикой является где-то выставлять свою версию программно. Например, в Python, добавив следующий код:
# file myproject/version.py
__version__ = "0.1.4"
# file myproject/__init__.py
from .version import __version__
Теперь мой вопрос: Как мне установить эту версию? Для этого я вижу два подхода:
- Содержимое
version.py
должно быть фиксированной строкой, такой как __version__ = "0.0.1+local"
, и никогда не изменять ее. При создании релиза (= новый тег Git) содержимое этого файла будет автоматически заменено на CI, основанный на имени тега Git, и будет использоваться только для этой сборки пакета релиза. - Изменение содержимого
version.py
вручную с явным подтверждением при выполнении релиза. Не указано c logi c для обновления версии в конвейере выпуска CI.
Мне кажется, что вариант 1 выглядит намного чище, поскольку «версия» приложения по определению соответствует с указанием c commit.
Однако я вижу вариант 2, который будет использоваться гораздо чаще. Я что-то пропустил? Каковы преимущества?