À chaque nouvelle version
Je me connecte en SSH à chaque serveur, je récupère la version, je redémarre le service et je teste le contrôle de santé avec curl, une machine à la fois.
Comment ça se passe aujourd’hui
ssh web-1.git pull.sudo systemctl restart app.curl /healthz.Attendre. Recommencer.exit.ssh web-2.
Chaque version, chaque machine.
Dites-le une fois à Kitewell
Créez un workflow chain ciblant mon groupe de serveurs web, qui récupère /srv/app avec git, attend mon approbation, redémarre le service app et vérifie http://127.0.0.1:8080/healthz sur chaque machine avant de passer à la suivante.
C’est toute la configuration. Kitewell détaille chaque étape pour que vous la vérifiiez, et rien n’est enregistré tant que vous ne l’appliquez pas.
Pour votre propre version, copiez ce texte et complétez les blancs :
Créez un workflow pour [mon groupe de serveurs] qui, une machine à la fois, récupère [le dossier de l’application] avec git, attend mon approbation, redémarre [le service de l’application] et vérifie [l’adresse du contrôle de santé] avant de passer à la suivante.
Ensuite, la tâche s’exécute toute seule
Déploiement · groupe webEn cours sur cet ordinateur
- Récupérer la versionUn pull en fast-forward sur la machine.Terminé
- Attendre votre accordLe redémarrage attend votre approbation, machine par machine.En attente de vous
- Redémarrer le serviceS’exécute après votre approbation.Terminé
- Vérifier qu’il répondSix essais, à cinq secondes d’intervalle. Une machine qui ne répond jamais arrête le déploiement.Terminé
Ce que vous obtenez à la place
Déploiement · groupe web
web-3 a échoué au contrôle de santé. Déploiement arrêté.
- web-1En bonne santé
- web-2En bonne santé
- web-3Aucune réponse de /healthz
- web-4Intacte
Bon à savoir
- Comme le groupe s’arrête au premier échec, une machine qui échoue à son contrôle interrompt le déploiement sans toucher aux autres.
- Les clés d’hôte sont approuvées dans le projet, et tout mot de passe provient d’un secret : le workflow ne contient donc ni l’un ni l’autre.
Ce qu’il faut
- Les serveurs enregistrés en groupe : une machine à la fois, arrêt en cas d’échec
Autres tâches
- Chaque lundiChaque lundi, je mets à jour nos dépendances, je lance les tests, et je perds la matinée à réparer ce qui a cassé.
- Chaque matinChaque matin, j’ouvre chaque pull request rien que pour savoir laquelle risque de casser quelque chose.
- Chaque matinChaque matin, je totalise les commandes de la veille à partir d’un export CSV et je rédige le même petit rapport.