Automatiser les mises à jour d'un container Gitlab

- Linux

Le rythme des releases de Gitlab est régulier, tous les 22 de chaque mois ils font une release. Du coup le 23 de chaque mois (ou dès que je peux), je m’occupe de faire manuellement la mise à jour.
Ce n’est pas très long à faire, quoi que cela dépend de votre connexion internet, mais fastidieux et rébarbatif.

La tâche cron

Si tous les 22 de chaque mois, une nouvelle version de Gitlab est dispo, pourquoi ne pas automatiser cela un peu avec une petite tâche cron ? Genre tous les 23 de chaque mois, pour avoir un peu de marge, je force l’update de Gitlab et si ça pète je répare.

J’ai ajouté la ligne suivante dans le crontab de mon user avec crontab -e :

0 4 23 * * /root/bin/update_gitlab.sh

Ainsi tous les 23 de chaque mois à 4h du matin, la SheevaBoite exécute un script d’update de Gitlab.

Le script d’update

Bon alors Docker est vraiment sympa, mais mettre à jour un container c’est quand même vraiment emmerdant…
On va juste puller la dernière version de l’image gitlab-ce et redémarrer le container :

docker pull gitlab/gitlab-ce:latest
docker stop git.mondomain.fr
docker rm git.mondomain.fr
docker run --detach \
   --hostname git.mondomain.fr \
   --publish 2222:22 \
   --name gitlab \
   --restart always \
   --volume /d/gitlab/config:/etc/gitlab \
   --volume /d/gitlab/logs:/var/log/gitlab \
   --volume /d/gitlab/data:/var/opt/gitlab \
   gitlab/gitlab-ce:latest

Le script est très basique, pas de gestion d’erreur, de toute manière l’output du script sera envoyé par mail à ma boite local.

La seule chose à faire qu’il me reste à faire est de vérifier dans les jours qui suivent que mon instance Gitlab est bien à jour dans les settings de la webapp.

Conclusion

Voilà une toute petite “automatisation” qui permet, si tous se passe bien, de gagner 10-15 minutes pour faire autre chose… Dans le cas ou l’update se passe mal, c’est peut être un plus de temps perdu que de gagné mais sinon ce ne serait pas drôle.

En tout cas, j’avais préparé cet article en novembre mais j’ai voulu attendre de voir si mon script fonctionnait avant d’en faire un article.

On a ainsi réglé le problème des mises à jours planifiées, maintenant comment faire pour les mises à jours de sécurité qui arrivent n’importe quand ?
Vu que j’aime les choses simples, je n’ai pas cherché de solution. Quand une update de sécurité sera dispo il suffira d’exécuter manuellement le script d’update.

KISS…