git, maven та jenkins - версія, розробка та випуск створює робочий процес


12

Що є кращим способом зробити наступне з git, maven та jenkins:

Я розробляю додаток, в якому я хотів би підтримувати гілки "dev" та "release". Я хотів би, щоб дженкіни будували і те, і інше. Це може бути так, що артефакти випуску мали б версії на зразок 1.5.2, а склади dev-файлу - просто 0.0.1-SNAPSHOT. Я хотів би не мати двох різних файлів pom.xml.

Я переглянув профілі, але, здається, вони не зможуть змінити версії артефактів. Один із способів, на який я дивився, може додати «кваліфікатор» до тестових складок. Звичайно, я міг би просто перейменувати файл, оскільки реальна артефактна інформація щодо цього не важлива, оскільки додаток є окремим.

Який би кращий спосіб зробити це? Або як би ти це зробив?

Відповіді:


3

Я думаю, що між цими гілками має бути притаманний взаємозв'язок, який повинен вирішити проблему номерів версій.

Звільнення

Я б припустив, що ви можете зробити щось на кшталт злиття готового до виробництва коду від гілки розробників до гілки випуску, а потім виконати реліз Maven (через Jenkins або вручну). Це автоматично переносить номери версій до наступної збірки. Отже, ви з’єднаєте код 1.4.7-SNAPSHOT до цієї гілки, виконайте випуск та скорочення версії 1.4.7, і Maven автоматично згортає вашу робочу копію до 1.4.8-SNAPSHOT.

Оновлення базової лінії (необов’язково)

Якщо ви вже не використовуєте ваш магістраль (або базову гілку тощо) як місце для своїх випусків, вам слід оновити магістраль, як тільки ви завершите випуск. Це означає, що ваші номери версій також оновлюються. Цей крок може бути суперечливим, якщо ви просто вважаєте гілку випуску базовою лінією.

Підключіться від базової лінії до відділення Dev

Важливо, щоб ваша галузь розвитку була в курсі фактичного виробничого коду. Вам потрібно об'єднати код від базової лінії (або відділення випуску, залежно від реалізації) до вашої галузі розробки. Це важливо у вашому випадку, оскільки це означає, що до цієї гілки внесені зміни пам’яті, які відбулися в процесі випуску, які змінили версію на 1.4.8-SNAPSHOT.


На основі читання, яке я проробляв (як і процесів у моїй організації), це здається досить стандартним та ефективним використанням Maven-релізів та знімків, а замість того, щоб підтримувати повністю відключені номери версій у різних галузях, це легко зрозуміти що будь-яка збірка 1.4.7-SNAPSHOT насправді була безпосереднім попередником версії 1.4.7. Вони пов'язані. Я б пішов так далеко, щоб сказати, якщо ви не зливаєтесь назад і назад між цими гілками, ви робите і версію SCM, і Maven неправильно, і ви піддаєте себе ризику розвиватися проти коду, який не відповідає виробництву , знову вводить помилки у виробництво тощо.


Під "maven release" ви маєте на увазі плагін maven-release?
Вареза

Так. Ви також можете встановити певні збірки в Jenkins, щоб вони були Maven Release Builds, що викликає плагін maven-release-release.
RonU

Це так, як "ключ" шукали. Дякую!
Вареза

1

Переосмисли свій підхід.

Дуже часто використовується, наприклад, 1.4.2 для версії випуску, а потім 1.4.3-SNAPSHOT для розробки до наступної.

Коли вам потрібно зберегти випуск 1.4.2, то відгалужте його від комітету, що виник у вашому артефакті 1.4.2.

Потім ви повідомляєте Дженкінсу розташування вашого сховища та ім'я філії, в результаті чого набір файлів перевіряється, а потім ви повідомляєте Дженкінсу використовувати maven у вашому проекті для його створення.

Примітка. Я виявив, що дуже корисно використовувати один pom.xml для створення фактичного артефакту та інший pom.xml для створення фактичних бітів для переходу до клієнта.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.