Skip to content
← Все статьи

Проверки доступности в CI/CD пайплайне

Коротко. Проверка доступности в CI/CD — это smoke-тест после деплоя: пайплайн дёргает health-эндпоинт нового релиза, ждёт код 200 и нужный признак в ответе, и только тогда считает деплой успешным. При провале — автоматический rollback. Это ловит «зелёный деплой, мёртвый сайт» до того, как его увидят пользователи. Но CI-проверка одноразовая — после неё за непрерывным аптаймом следит внешний synthetic-мониторинг сайтов.

Зачем проверять доступность в пайплайне

Самый опасный класс инцидентов — когда пайплайн зелёный, артефакт собрался, поды поднялись, но приложение не отвечает: упала миграция, не подхватился секрет, сломался конфиг. Без постдеплойной проверки вы узнаете об этом от пользователей.

  • Smoke-тест — минимальная проверка «приложение живо» сразу после релиза;
  • Health-gate — деплой считается успешным только при 200 на health;
  • Auto-rollback — провал проверки откатывает релиз;
  • Постдеплойный мониторинг — внешний чекер следит дальше.

Curl-проверка в GitHub Actions

Базовый шаг smoke-теста с retry: ждём, пока новый релиз прогреется, и проверяем код ответа.

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy
        run: ./deploy.sh

      - name: Smoke test health endpoint
        run: |
          set -euo pipefail
          URL="https://example.com/healthz"
          for i in $(seq 1 10); do
            code=$(curl -sS -o /tmp/body.txt -w "%{http_code}" --max-time 5 "$URL" || echo "000")
            if [ "$code" = "200" ] && grep -q '"status":"ok"' /tmp/body.txt; then
              echo "Health OK on attempt $i"
              exit 0
            fi
            echo "Attempt $i: HTTP $code, retrying in 6s..."
            sleep 6
          done
          echo "Health check failed after 10 attempts"
          exit 1

      - name: Rollback on failure
        if: failure()
        run: ./rollback.sh

Что проверять в smoke-тесте

ПроверкаЗачемСигнал провала
HTTP 200 на /healthzПриложение отвечает5xx или таймаут
Признак в теле ответаОтвечает именно приложение, а не заглушкаНет ожидаемой строки
Версия в /versionЗадеплоен нужный билдСтарый commit hash
Готовность зависимостейБД и кэш доступныreadiness != ready
Smoke-тест должен быть быстрым и детерминированным. Один-два запроса с retry, а не полный e2e-прогон. Цель — поймать катастрофу за секунды, а не оттестировать весь продукт.

Retry-логика и таймауты

Новый под не отвечает мгновенно: ему нужно прогреться. Поэтому smoke-тест должен делать несколько попыток с паузой и общим дедлайном. Без retry проверка упадёт на первом же запросе к ещё не готовому релизу и устроит ложный rollback.

После пайплайна — внешний мониторинг

CI-проверка одноразовая: она подтверждает деплой, но не следит за сайтом дальше. Сертификат истечёт через месяц, сторонний API документацию ляжет ночью, DNS уедет — пайплайн об этом не узнает.

enterno.io подхватывает эстафету как непрерывный synthetic-мониторинг: HTTP / SSL / Ping / DNS из регионов RU / EU / US, бесплатно 10 мониторов с интервалом 5 минут (платно — 1 минута / 30 секунд). Через REST API v4 можно прямо из пайплайна создать или включить монитор на новый эндпоинт. А MCP-сервер (16 инструментов для Claude, Cursor, Zed) позволяет агенту запускать проверки доступности из IDE.

FAQ

Чем smoke-тест отличается от e2e?

Smoke-тест проверяет, что приложение вообще живо (1–2 запроса). E2E прогоняет пользовательские сценарии целиком. В пайплайне после деплоя нужен быстрый smoke, e2e — отдельной стадией.

Как сделать auto-rollback по health-check?

В GitHub Actions используйте if: failure() на шаге отката. При провале smoke-теста job помечается failed и запускается rollback-скрипт.

Сколько retry делать в smoke-тесте?

Обычно 5–10 попыток с паузой 5–6 секунд и общим дедлайном до минуты — достаточно, чтобы релиз прогрелся, но не затягивает пайплайн.

Можно ли управлять мониторами из пайплайна?

Да, через enterno.io API v4: создать монитор на новый эндпоинт или включить существующий одним POST-запросом из CI.

Свяжите деплой с мониторингом: поднимите монитор на enterno.io/monitors и управляйте им через API из пайплайна. Дальше: health-check эндпоинты, мониторинг как код, лучшие практики алертинга.

Проверьте ваш сайт прямо сейчас

Проверить свой сайт →
Другие статьи: DevOps
DevOps
Мониторинг AI-агентов: доступность и стоимость
22.06.2026 · 33 просм.
DevOps
Мониторинг Docker-контейнеров: метрики, инструменты и лучшие практики
16.03.2026 · 168 просм.
DevOps
Zabbix или облачный мониторинг: что выбрать
18.06.2026 · 33 просм.
DevOps
Стратегии деплоя без простоя
16.03.2026 · 124 просм.