Автоматически генерировать теги git в форме vx.xx
Здравствуйте, Stackru, я работаю над проектом, включающим CI с Jenkins, git, rsync, и поэтому я пытаюсь найти способ автоматически генерировать версии тегов для каждого успешного развертывания в форме vX.XX.
Мой вопрос: есть ли доступные инструменты, которые сделают это для вас, или вам придется делать это вручную (bash, grunt и т. Д.)?
Так что вы можете позвонить на Дженкинс, и он скажет вам, что пометить ваше здание. Я думал о том, чтобы иметь файлы в каждой папке, создавая / и выпуская /. Итак, как я могу разобрать файлы (bash script, grunt и т. Д.), Чтобы узнать, какая у меня версия, чтобы я мог сделать:
- следующая сборка (назовите правильный следующий налог, т. е. если бы моя предыдущая сборка была v1.2.3, я бы сделал v.1.2.4.... и т. д.)
- Откат к предыдущему тегу в случае сбоя сборки. (если я делаю v1.2.4, и он не смог выполнить откат до v1.2.3)
Я уверен, что есть много вариантов, пожалуйста, поделитесь:D
РЕДАКТИРОВАТЬ: Ну, я искал что-то вроде
git tag --semantic--versioning --ma 0 --mi 0 --p 3
чтобы при вводе
git describe
вы бы получили что-то вроде
v0.0.3
таким образом, у вас может быть другой инструмент для работы в параметризованных сборках Jenkins
1 ответ
Если я правильно понял, ваша кодовая база имеет некоторую информацию о версии, и вам нужен способ упростить работу со строкой версии; возможность анализировать и увеличивать / уменьшать его, а затем делать из него теги git. Если ты в порядке с звонком git tag
сами, тогда вы просто остались с обработкой строки версии. Для этого я использовал модуль "Версия" в Perl:
http://search.cpan.org/~bdfoy/Perl-Version-1.013/lib/Perl/Version.pm
По сути, он позволяет вам создать объект версии из строки (которая может иметь различные форматы) и предоставляет функции для манипулирования и доступа к версии или ее частям. Вы можете использовать это прямо в ваших работах Jenkins, используя perl -e
или создайте сценарии, если хотите использовать их повторно. Простой пример, который увеличивает вспомогательную версию с помощью perl и делает из нее тег:
#!/usr/bin/env bash
oldversion="v1.2.1"
newversion=$(perl -MPerl::Version -e "my \$ver = Perl::Version->new(\"${oldversion}\"); \$ver->increment(1); print \"\$ver\"");
echo "Tagging with ${newversion}"
git tag "${newversion}"
Это берет строку версии v1.2.1
и увеличивает незначительное значение для создания v1.3.0
, распечатывая его на экране и делая тег git. Обратите внимание, что часть исправления обнуляется автоматически при увеличении младшего значения, и формат строки версии сохраняется.