Откат Дженкинса предыдущая версия развертывания
Вот эта вещь. У меня есть несколько конвейерных заданий jenkins, которые развертывают некоторые java-приложения. Конвейеры запускаются сценариями из SCM. Это сценарии, которые захватывают код команды разработчиков и: 1- извлекают этот код; 2- компилируют и создают WAR 3- копируют войну на веб-сервер.
Теперь разработчики хотят реализовать откат, и если задание запущено, а новое развертывание выполнено и не выполнено, они хотят вернуться к последнему, которое работало нормально.
Есть ли способ сделать это в Дженкинс и, например, с помощью артефакта Jfrog? у нас настроен артефакт, и мы можем загружать WARS (или другие файлы) в этот репозиторий, но он не используется. Я не знаю, как это реализовать. Я думал, что использование тегов для разных файлов WAR и, если развертывание не удастся, извлекает из артефакта последнюю WAR, которая работает нормально? Это возможно? Как это может быть сделано в Дженкинс с помощью артефакта. Я могу реализовать новый шаг, который после создания WAR затем загружает этот WAA в артефакт, но как я могу затем соединить это с jenkins, чтобы использовать WAR, который я хочу? Любое предложение о том, как это сделать? благодарю вас!
2 ответа
Я предлагаю вам это подходит:
Без артефакта
В этом случае вам просто нужно параметризовать ваш текущий конвейер, чтобы получить имя ветви или тег в качестве параметра.
Рабочий процесс может быть:
- Перед тем как объединить ветку релиза с мастером, проверьте наличие тега в предыдущем стабильном выпуске или создайте новый.
- Объедините ваш релиз (как, тестовый или любой другой) с основной веткой
- Выполните ваш текущий конвейер с главной веткой.
- Если обнаружена какая-либо ошибка, выполните откат с помощью SCM ( csv, svn, git и т. Д.). Например, битбакет имеет опцию возврата в объединенном разделе запроса на извлечение.
- Выполните снова тот же конвейер с главной ветвью в качестве параметра. Если откат невозможен, выполните этот конвейер с последним стабильным тегом в качестве параметра.
С Artifactory или каким-либо Artifact Repository
В этом случае вам необходимо принять стратегию управления версиями программного обеспечения. Прочитайте эти источники:
- https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm
- /questions/41004371/alfa-beta-snimok-reliz-nochnoj-veha-reliz-kandidat-rc-kogda-ispolzovat-kakuyu-terminologiyu/41004373#41004373
В самом простом режиме вам просто нужно создать инкрементную версию своих войн. Весенние версии работают аналогично:
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):
- Вчера вечером вы выпустили версию prod.32.ehR456e
- Сегодня кажется, что эта версия имеет проблемы в Prod.
- Используя автоматический конвейер развертывания, выполните откат путем повторного развертывания версии prod.31.fBr451e, хранящейся в выпусках github или пакетах gitlab.