Восстановление после неудачного релиза

LinuxBeginner
Практиковаться сейчас

Введение

Для Common Ground подготовлен ещё один кандидат на релиз. Команда публикации может успешно завершиться, хотя посетитель не сможет выполнить важное действие. Ваша задача — заметить эту разницу и при необходимости восстановить заведомо рабочий релиз.

На этом одноразовом учебном сайте нет настоящих посетителей. Вы намеренно отработаете восстановление; в реальном процессе проверки до публикации могут отклонить кандидата ещё до его предоставления посетителям.

Это новая среда: работает event-v1 с Room A независимо от предыдущей лабораторной работы. Вы подготовите event-v3, проверите реальные пользовательские маршруты и восстановите исходный сервис, не редактируя предоставленные файлы сайта. Вкладки Workstation, Website и Topology готовы.

Подготовьте цель восстановления

Вы определите исправную версию и отдельно установите кандидата перед изменением сайта. Начните в Website.

Определите, что нужно восстановить

На главной Linux Evening проходит в Room A, а подвал указывает event-v1. Нажмите строку мероприятия, убедитесь, что описание открывается, затем откройте Registration instructions. Именно эти нормальные функции должно вернуть восстановление. Нажмите COMMON GROUND, чтобы вернуться на главную в Website.

Переключитесь в Workstation. Терминал уже находится в /home/labex/project/website-release. Проверьте текущую символическую ссылку:

readlink current

Она выводит releases/event-v1. Проверьте сохранённый файл версии:

cat releases/event-v1/version.txt

Он выводит event-v1. Здесь этот каталог — явно определённая цель восстановления. «Предыдущая» версия не всегда автоматически правильна; в этой работе вы установили, что именно эта версия правильно обслуживает нужные страницы.

Подготовьте кандидата

Выведите список пакетов:

bash release.sh list

В среде находятся event-v1 и event-v3. Кандидат переносит встречу в Community Hall. Новое имя или успешная установка не доказывают его качество.

Установите, но не выбирайте его:

bash release.sh install event-v3

Сообщение подтверждает, что текущий сайт не изменился. Покажите установленные релизы:

ls releases

Должны присутствовать event-v1 и event-v3. Оставьте оба неизменными: кандидат нужен для оценки, а исходная версия — для восстановления.

Распознайте неудачный релиз

Вы опубликуете кандидата и отделите успешный выбор версии от работоспособности пользовательских функций. Начните в Workstation.

Убедитесь в успешном переключении

Выберите кандидата:

bash release.sh deploy event-v3

Скрипт сообщает event-v3 и просит проверить страницы. Команда завершила переключение, а не оценку бизнес-требований.

Проверьте статус главной с параметрами curl из первой работы:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/

Ответ — 200. Ресурс версии тоже работает:

curl -sS http://127.0.0.1:8081/version.txt

Он выводит event-v3. Ни одно наблюдение не подтверждает работу ссылки на мероприятие.

Найдите видимую пользователю ошибку

Переключитесь в Website, вернитесь на главную через COMMON GROUND и обновите страницу. Главная выглядит полной и показывает Community Hall. Нажмите Linux Evening.

Вместо описания видны Let's get you back on track. и 404 / A SMALL DETOUR. Это оформленная страница отсутствующего ресурса. Она выглядит аккуратно, но результат HTTP всё равно означает ошибку для запрошенного мероприятия.

Реально отсутствующая страница мероприятия в кандидате

Ссылка кандидата ведёт на /events/container-evening.html. Вернитесь в Workstation и запросите именно этот путь:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/container-evening.html

Ожидаемый результат — 404. Это намеренное свидетельство, а не команда, которую следует исправить или пропустить. Без параметра curl для ошибки при неуспешном HTTP-статусе получение 404 позволяет curl нормально завершиться: ответ сервера отличается от невозможности соединения.

Переключитесь в Topology. Там всё ещё может отображаться Homepage reachable, поскольку узкая проверка успешна. Необходимый путь мероприятия не работает. Нужно отклонить релиз и восстановить заведомо рабочую версию, а не останавливать сайт или переписывать кандидата.

Восстановите и проверьте заведомо рабочую версию

Вы восстановите исходный сайт и убедитесь, что посетители снова могут им пользоваться. Начните в Workstation.

Выберите сохранённый релиз

rollback выбирает уже установленную версию. Он не исправляет и не пересобирает неудачного кандидата. Восстановите проверенную цель:

bash release.sh rollback event-v1

Ожидаемый вывод:

Selected event-v1. The server reports:
event-v1
Selection finished. Check the required pages before accepting this release.

Проверьте символическую ссылку:

readlink current

Она выбирает releases/event-v1. Каталог event-v3 сохранён; его наличие для дальнейшего исследования не означает, что он по-прежнему обслуживает посетителей.

Проверьте восстановленный пользовательский путь

Переключитесь в Website. Браузер может оставаться на отсутствующем URL кандидата. Нажмите COMMON GROUND и обновите главную. Должны отображаться Room A и event-v1. Снова нажмите Linux Evening: восстановленная ссылка открывает /events/linux-evening.html. Откройте Registration instructions и проверьте доступность шагов участия.

Восстановленное описание мероприятия

Старый URL, использовавшийся только кандидатом, всё ещё возвращал бы 404. Восстановление возвращает реальные ссылки исправного сайта, а не создаёт все отсутствующие URL.

Вернитесь в Workstation и проверьте восстановленные пути:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/linux-evening.html
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/registration.html

Все три возвращают 200. Проверки в браузере подтвердили и правильность содержимого.

Сохраните обе установленные версии:

ls releases

Вы по-прежнему должны видеть event-v1 и event-v3. Сервис восстановлен; дефект кандидата остаётся для последующей задачи разработки. Упражнение восстанавливает только статические файлы сайта. Оно не отменяет изменения базы данных, отправленные пользователями данные или всю сессию браузера атомарно.

Резюме

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