À propos du projet
Ce dépôt fournit un mécanisme de maintien en vie pour un service web Render gratuit. Il combine un workflow GitHub Actions avec un petit script Node.js qui envoie des requêtes HTTP GET périodiques vers une URL cible configurée, afin que le service ne s'endorme pas par inactivité.
Problème abordé : le planificateur gratuit de GitHub Actions peut retarder de courts intervalles cron, comme toutes les 5 minutes, lorsque ses serveurs sont occupés, créant des intervalles entre les exécutions. Les services du niveau gratuit de Render se mettent en veille après environ 15 minutes sans trafic, donc des pings manqués peuvent provoquer des démarrages à froid.
Approche décrite dans le README :
- Session active de 14 minutes : chaque job GitHub Actions s'exécute pendant environ 14 minutes et envoie un ping toutes les 4 minutes (à 0, 4, 8 et 12 minutes).
- Déclencheurs cron multiples : des planifications telles que */10 * * * * et 5,15,25,35,45,55 * * * * sont utilisées pour que de nouvelles sessions de runner continuent de se lancer.
- L'objectif déclaré est une couverture continue, car les pings toutes les 4 minutes au sein d'une fenêtre active de 14 minutes restent en dessous du seuil d'inactivité de 15 minutes.
Fonctionnalités :
- API natives de Node.js 22 : utilise fetch() intégré et node:timers/promises, sans dépendances npm externes.
- Logique de nouvelle tentative : réessaie jusqu'à 3 fois avec un délai de 10 secondes en cas d'erreurs réseau ou de réponses non-2xx.
- Sortie console : journalise les horodatages ISO UTC, les codes de statut HTTP, les temps de réponse en millisecondes, les résultats succès/échec et les compteurs de cycles de session.
- Déclenchement manuel : prend en charge workflow_dispatch pour des exécutions immédiates.
Configuration : l'URL cible est définie en haut de ping.js sous la constante TARGET_URL, pointant actuellement vers un point de terminaison hébergé sur Render. Modifier le point de terminaison nécessite d'éditer cette constante et de pousser le changement.
Déploiement : le README indique aux utilisateurs de valider et pousser les fichiers mis à jour sur la branche main, après quoi GitHub Actions démarre la session de ping active.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.