Skip to content

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.