- PVSM.RU - https://www.pvsm.ru -
Всем привет!
Всегда было интересно, что такое версии продукта и как ими управлять? Как автоматизировать управление версиями разработки? Прошу под кат.

Меня зовут Роман. Я разработчик в очень интересной компании Softeq, где каждый человек -вдохновитель.
При разработке различных инструментов я впал в размышления о том, всем ли разработчикам известно, что же такое версия, какой смысл она несет и как ей управлять при разработке. Итак, давайте рассмотрим, что же такое версионирование.
Версионирование — разработка и управление несколькими выпусками продукта, которые имеют тот же общий функционал, но усовершенствованы, модернизированы либо индивидуализированы.
Коротко, версия говорит об изменении продукта. Как версия говорит об изменении продукта?
Давайте назовем систему упорядочивания символов для обозначения версии продукта — схемой версионирования. Различные схемы [1] версионирования были созданы для отслеживания версий различного программного обеспечения.

Схем версионирования много, но мы сталкиваемся с Семантическим версионированием (Semantic Version) [2] каждый день. Для Семантического версионирования характерно то, что номера версий и то, как они меняются, передают смысл содержания исходного кода и какие модификации были применены от одной версии к другой.
Рассмотрим, каким образом формируется номер Семантической версии.

Давайте представим, что у нас имеется проект в разработке. Главная задача проекта — управление построением библиотеки. Проект позволяет производить заказ материалов для построения здания, контролировать этапы построения библиотеки. В настоящее время спроектирована архитектура приложения, произведена реализация базовых задач. При тестировании функционала заказа материалов для построения здания библиотеки обнаруживается ошибка, bug.
Производится исправление ошибки и повышается Patch версия проекта.

У заказчика возникла идея о необходимости внедрить анализ маркетинговой информации в проект. Разработчики искусно и быстро спроектировали сервисы анализа данных, интегрировали сервисы с актуальной архитектурой. Произведено добавление новой функциональности проекта, которая не нарушает обратной совместимости [3]. Повысилась Minor версия проекта.

Проект был успешно реализован. Через некоторое время у заказчика возникла идея по развитию данной технологии автоматизации бизнеса. В предстоящих планах были совершенно новые сервисы: формирование команды строителей, внутренняя социальная сеть, внутренний обмен документами и прочее. Разработчики проявили высокую компетентность, и через некоторое время архитектура проекта была спроектирована для решения и новых, и старых задач. Новая архитектура проекта внесла обратно несовместимые изменения. Повысилась Major версия проекта.

Итак, мы представляем, что же такое версии продукта. Но как ими управлять?
Давайте рассмотрим инструмент автоматизации управления версиями.
NPM: https://www.npmjs.com/package/versionings [4]
GitHub: https://github.com/morozow/versionings [5]
Управление версиями производится при помощи командной строки:
versionings --semver=[<semantic-version> | patch | prepatch | minor | preminor | premajor | prerelease | major] --branch=[<version-branch-name> | any-hyphen-case-less-100-characters-string] [--push]
Актуальная версия продукта хранится как в ./package.json файле проекта, так и в Git тегах и ветке повышения версии. Автоматизация имеет возможность интеграции с различными сторонними инструментами — управление версиями производится через CLI команду.
Давайте рассмотрим пример повышения версии продукта.
Ведется разработка проекта актуальной версии 2.5.3. Разработка нового сервиса проекта ведется в ветке crm-user-service. Завершилась разработка сервиса, закоммичены все изменения и принято решение о повышении минорной версии:
versionings --semver=minor --branch=user-service --push
./package.json: 2.5.3 -> 2.6.0На этом все :)
Всем продуктивного настроения и отличного дня!
Автор: Роман Морозов
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/303074
Ссылки в тексте:
[1] Различные схемы: https://en.wikipedia.org/wiki/Software_versioning#Schemes
[2] Семантическим версионированием (Semantic Version): https://semver.org/
[3] обратной совместимости: https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C
[4] https://www.npmjs.com/package/versionings: https://www.npmjs.com/package/versionings
[5] https://github.com/morozow/versionings: https://github.com/morozow/versionings
[6] Источник: https://habr.com/post/433994/?utm_source=habrahabr&utm_medium=rss&utm_campaign=433994
Нажмите здесь для печати.