Mise à jour de Jenkins sur le YunoHost d'ISTA¶
J'ai voulu mettre à jour le Jenkins 2.414 sur le YunoHost d'ISTA, depuis l'UI admin de YunoHost, pour passer à la version 2.426. La mise à jour a échouée, la restauration du backup, fait juste avant la mise à jour, a échoué aussi donc je n'ai plus de Jenkins sur le YunoHost d'ISTA.
Je dois donc restaurer le Jenkins du YunoHost d'ISTA.
Restauration du backup¶
Un backup du Jenkins a été fait avant la tentative d'upgrade et je peux le voir avec la commande :
pbrisacier@apps:~$ sudo yunohost backup list
archives:
- redirect-pre-upgrade1
- redirect--2-pre-upgrade1
- portainer-pre-upgrade1
- 20231004-160547
- jupyterlab-pre-upgrade2
- phpmyadmin-pre-upgrade1
- jenkins-pre-upgrade2
Mais la restauration du backup échoue (à nouveau) car le port 8080 est occupé.
Qui occupe le port 8080 ?
pbrisacier@apps:~$ sudo lsof -i tcp:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 3790913 root 18u IPv6 3450436781 0t0 TCP *:http-alt (LISTEN)
Je peux en savoir plus sur la commande du process 3790913 avec :
pbrisacier@apps:~$ sudo ps -p 3790913 -o args
COMMAND
node /opt/node_n/n/versions/node/18/bin/configurable-http-proxy --ip --port 8080 --api-ip 127.0.0.1 --a...
Mais cela ne m'aide pas à savoir à quelle app cela appartient... mais je peux remonter au process parent avec :
pbrisacier@apps:~$ sudo ps -p 4101058 -f
UID PID PPID C STIME TTY TIME CMD
root 4101058 4101047 0 16:01 ? 00:00:00 node /opt/node_n/n/versions/node/18/bin/configurable...
pbrisacier@apps:~$ sudo ps -p 4101047 -f
UID PID PPID C STIME TTY TIME CMD
root 4101047 1 0 16:01 ? 00:00:01 /opt/jupyterlab/venv/bin/python3 /opt/jupyterlab/ven...
C'est donc Jupyter Lab qui occupe le port 8080. Je l'ai arrêté avec :
sudo systemctl stop jupyterlab.service
Astuce
Refaire la commande sudo lsof -i tcp:8080, qui ne renvoie rien permet de confirmer que
c'est bien Jupyter Lab qui occupait ce port.
J'ai ensuite restauré Jenkins avec succès avec la commande :
sudo yunohost backup restore jenkins-pre-upgrade2 --apps jenkins
Puis j'ai redémarré Jupyter Lab avec :
sudo systemctl start jupyterlab.service
Pourquoi la mise à jour a échouée¶
En regardant les logs, c'est bien le port 8080 occupé qui a fait échouer la mise à jour... Etrange car j'avais modifié les scripts upgrade et restore pour qu'ils ne plantent plus si le port 8080 est occupé. Et ma mise à jour de Jenkins a fonctionné sur ynh01 où ce port est occupé par Jupyter Lab aussi.
Faire la mise à jour¶
Je vais, pour ne pas perdre plus de temps, mettre à jour Jenkins après avoir arrêté Jupyter Lab.