Каков наилучший способ создания версий программного обеспечения с использованием репозитория GIT (MAJOR.MINOR.COMMIT_NUMBER)? - PullRequest
0 голосов
/ 12 декабря 2018

Я использую 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?

1 Ответ

0 голосов
/ 12 декабря 2018

Вы все еще можете сохранить свою метку, но также сгенерировать файл свойств с идентификатором ревизии Git.

См. git-commit-id/maven-git-commit-id-plugin в качестве примера плагина Maven, который автоматизирует этот процесс.
См. Maven central .

Плагин Maven, который включает информацию о git-хранилище во время сборки в POJO / *.properties).
Заставьте ваши приложения сообщать вамиз какой именно версии они были построены!

...