Как настроить автоматическое создание версий в GitLab, GitHub и других аналогичных сервисах?

Существуют ли легковесные инструменты для автоматического увеличения патчевой версии в Git, Docker-образе и файле package.json при мерже в master? Мне хотелось бы использовать для этой цели что-то более простое, кроме GitVersion или Node-image, так как они считаются слишком объемными. Есть ли готовые решения или предпочтительнее собирать свой контейнер из скриптов для этой задачи?
  • 27 марта 2024 г. 17:49
Ответы на вопрос 5
Для настройки автоматического создания версий в GitLab, GitHub и других аналогичных сервисах, можно использовать интеграцию с CI/CD инструментами, такими как GitLab CI, GitHub Actions или Jenkins. 

В GitLab CI, например, можно добавить шаг в пайплайн, который будет автоматически увеличивать версию в файле package.json и создавать новый тег в репозитории. Для этого можно использовать различные скрипты и инструменты, такие как npm version для увеличения версии в package.json и git tag для создания нового тега. 

Если вы ищете легковесные инструменты для автоматического увеличения патчевой версии в Git, Docker-образе и файле package.json при мерже в master, то возможно вам стоит рассмотреть простые скрипты на bash или Python. 

Например, вы можете написать скрипт на bash, который будет автоматически увеличивать версию в файле package.json после мержа в master и создавать новый тег в Git. Для работы с Docker-образами можно использовать Docker API для обновления версии образа после каждого успешного мержа. 

Таким образом, для достижения вашей цели можно использовать как готовые инструменты и сервисы, такие как CI/CD пайплайны, так и написать собственные скрипты и утилиты для автоматизации увеличения версий в Git, Docker и package.json.
svn имеет инкрементную нумерацию. 
распредленщики, и гит в том числе, оперируют хэшами.

хотите внятную версионность – делайте ручками
Я думаю, что можно это сделать при помощи Git Post-Merge Hook или с GitHub actions.
Можно в gitlab CI использовать $CI_PIPELINE_ID или $CI_PIPELINE_IID. Наверняка в других тоже есть подобное. 

У нас тут автоматом вешается тэг v$CI_PIPELINE_ID в репе конфигов и сборок и дальше это является версией при деплое. Но ничто не мешает похожим образом делать тэг образа, имя файла, имя артефакта итд.
Для npm есть например вот такое: 
https://dev.to/zirkelc/release-npm-package-with-au...
Похожие вопросы