Об этом проекте

Этот репозиторий предоставляет механизм поддержки активности для бесплатного веб-сервиса Render. Он сочетает рабочий процесс GitHub Actions с небольшим скриптом Node.js, который периодически отправляет HTTP GET-запросы на настроенный целевой URL, чтобы сервис не засыпал из-за отсутствия трафика. Решаемая проблема: бесплатный планировщик GitHub Actions может задерживать короткие интервалы cron, например каждые 5 минут, когда его серверы перегружены, из-за чего между запусками возникают промежутки. Бесплатные сервисы Render засыпают примерно через 15 минут без трафика, поэтому пропущенные пинги могут приводить к холодным стартам. Подход, описанный в README: - Активный 14-минутный сеанс: каждое задание GitHub Actions работает около 14 минут и отправляет пинг каждые 4 минуты (на 0, 4, 8 и 12 минуте). - Несколько триггеров cron: используются расписания, такие как */10 * * * * и 5,15,25,35,45,55 * * * *, чтобы новые сеансы runner продолжали запускаться. - Заявленная цель — непрерывное покрытие, поскольку пинги каждые 4 минуты в пределах активного 14-минутного окна остаются ниже 15-минутного порога бездействия. Возможности: - Нативные API Node.js 22: используются встроенные fetch() и node:timers/promises без внешних зависимостей npm. - Логика повторных попыток: до 3 повторов с задержкой 10 секунд при сетевых ошибках или ответах со статусом вне диапазона 2xx. - Консольный вывод: записываются метки времени ISO UTC, коды HTTP-статусов, время ответа в миллисекундах, результаты успеха или неудачи и счетчики циклов сеанса. - Ручной запуск: поддерживается workflow_dispatch для немедленного выполнения. Настройка: целевой URL задается в начале файла ping.js как TARGET_URL и сейчас указывает на конечную точку, размещенную на Render. Чтобы изменить конечную точку, нужно отредактировать эту константу и отправить изменение. Развертывание: README инструктирует пользователей зафиксировать и отправить обновленные файлы в ветку main, после чего GitHub Actions начнет активный сеанс пинга.