Я использую Jenkins для запуска сборок и запуска тестов.Я нахожусь в процессе миграции из SVN в Git.В настоящее время я работаю с программным обеспечением, используя формат MAJOR.MINOR.SVN_REVISION.
Например, MAJOR и MINOR поступают из pom.xml для проектов и библиотек Java
...
<groupId>com.example.ci</groupId>
<artifactId>test-java-project</artifactId>
<version>2.1</version>
<packaging>jar</packaging>
...
Когда Javaприложение / программное обеспечение построено, я добавляю версию SVN к версии.Например, если версия сборки SVN - 123, тогда полная версия будет 2.1.123.Это прекрасно работает.
Я не могу использовать ту же логику для Git, потому что номер коммита Git является хеш-номером и не является последовательным.Например: 2.1.a126ac21090
Это вызовет проблемы, когда мне нужно будет определить последние библиотеки и приложения, используя номер версии.
Первый вариант - использоватьномер сборки Jenkins (MAJOR.MINOR.JENKINS_BUILD_NUMBER), но он также имеет некоторые недостатки, такие как создание и размещение Jenkins, создающих один и тот же номер версии для двух разных артефактов.
Второй параметр - этоиспользовать "git rev-list --count", но это может вернуть одно и то же число для двух разных ветвей функций, и я мог бы получить два разных артефакта с одинаковым номером версии.
Есть ли еще лучший способверсия программного обеспечения, аналогичная MAJOR.MINOR.SVN_REVISION с использованием Git?