Откат Дженкинса предыдущая версия развертывания - PullRequest
0 голосов
/ 09 октября 2018

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

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

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

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

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

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

Я предлагаю вам следующие подходы:

Без Artifactory

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

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

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

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

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

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

spring-release-versions

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 и разверните ее как шаг отката.

Другие аналогичные приемы

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