Откат Дженкинса предыдущая версия развертывания

Вот эта вещь. У меня есть несколько конвейерных заданий jenkins, которые развертывают некоторые java-приложения. Конвейеры запускаются сценариями из SCM. Это сценарии, которые захватывают код команды разработчиков и: 1- извлекают этот код; 2- компилируют и создают WAR 3- копируют войну на веб-сервер.

Теперь разработчики хотят реализовать откат, и если задание запущено, а новое развертывание выполнено и не выполнено, они хотят вернуться к последнему, которое работало нормально.

Есть ли способ сделать это в Дженкинс и, например, с помощью артефакта Jfrog? у нас настроен артефакт, и мы можем загружать WARS (или другие файлы) в этот репозиторий, но он не используется. Я не знаю, как это реализовать. Я думал, что использование тегов для разных файлов WAR и, если развертывание не удастся, извлекает из артефакта последнюю WAR, которая работает нормально? Это возможно? Как это может быть сделано в Дженкинс с помощью артефакта. Я могу реализовать новый шаг, который после создания WAR затем загружает этот WAA в артефакт, но как я могу затем соединить это с jenkins, чтобы использовать WAR, который я хочу? Любое предложение о том, как это сделать? благодарю вас!

2 ответа

Решение

Я предлагаю вам это подходит:

Без артефакта

В этом случае вам просто нужно параметризовать ваш текущий конвейер, чтобы получить имя ветви или тег в качестве параметра.

Рабочий процесс может быть:

  • Перед тем как объединить ветку релиза с мастером, проверьте наличие тега в предыдущем стабильном выпуске или создайте новый.
  • Объедините ваш релиз (как, тестовый или любой другой) с основной веткой
  • Выполните ваш текущий конвейер с главной веткой.
  • Если обнаружена какая-либо ошибка, выполните откат с помощью SCM ( csv, svn, git и т. Д.). Например, битбакет имеет опцию возврата в объединенном разделе запроса на извлечение.
  • Выполните снова тот же конвейер с главной ветвью в качестве параметра. Если откат невозможен, выполните этот конвейер с последним стабильным тегом в качестве параметра.

С Artifactory или каким-либо Artifact Repository

В этом случае вам необходимо принять стратегию управления версиями программного обеспечения. Прочитайте эти источники:

В самом простом режиме вам просто нужно создать инкрементную версию своих войн. Весенние версии работают аналогично:

весна-релиз-версия

https://mvnrepository.com/artifact/org.springframework/spring-core

Например:

  • Сегодня у вас есть стабильная версия 5.0.0-RELEASE, сохраненная в вашем артефакте и развернутая в производственных средах.
  • Ночью запустите ваш конвейер и в качестве последнего шага загрузите вашу войну api-5.0.0-RELEASE.war в ваш артефакт.
  • Через месяц у вас новая версия 5.0.1-RELEASE.
  • Выполните ваш конвейер и, если обнаружена ошибка, просто загрузите предыдущую стабильную версию 5.0.0-RELEASE и разверните ее как шаг отката.

Другие подобные методы

  • Создайте сборку своего приложения, используя docker и назначив инкрементную версию.

В качестве замены для Artifactory вы можете использовать выпуски Github или пакеты Gitlab и следовать сценарию, например (при условии схемы управления версиями, такой как prod.build_number.short_commit_hash):

  1. Вчера вечером вы выпустили версию prod.32.ehR456e
  2. Сегодня кажется, что эта версия имеет проблемы в Prod.
  3. Используя автоматический конвейер развертывания, выполните откат путем повторного развертывания версии prod.31.fBr451e, хранящейся в выпусках github или пакетах gitlab.
Другие вопросы по тегам