Avec la méthode d’installation snap pour SemaphoreUI devenant obsolète, j’ai récemment entrepris le processus de migration vers une autre méthode d’hébergement. J’ai choisi d’installer la version du package de Semaphore sur le même système. J’avais initialement prévu d’utiliser les capacités de sauvegarde et de restauration sur une nouvelle installation, mais j’ai rencontré plusieurs problèmes qui semblent tous être des bugs qui ont été corrigés mais qui impactent la dernière version de Semaphore dans le snap. J’ai ensuite emprunté une autre voie que je suggère ici d’ajouter comme un chemin documenté pour que d’autres puissent migrer.

Étapes pour migrer les fichiers Snap de Semaphore à utiliser avec le gestionnaire de packages ou l’installation binaire : NOTE : Cette méthode conserve boltdb comme base de données pour SemaphoreUI

  1. Connectez-vous en tant que root via sudo su - ou une autre méthode valide.
  2. Arrêtez la version snap de SemaphoreUI. snap stop semaphore.semaphored
  3. Copiez les fichiers du snap vers un nouveau répertoire qui sera le répertoire personnel d’un nouvel utilisateur système appelé semaphore. cp -rf /root/snap/semaphore/common /home/semaphore
  4. Déplacez le dossier repositories vers le nouvel emplacement temporaire. mv -f /home/semaphore/repositories /tmp/semaphore
  5. Mettez à jour config.json avec les nouveaux chemins vers database.boltdb et le dossier temporaire. sed -i 's/\/root\/snap\/semaphore\/common\/database.boltdb/\/home\/semaphore\/database.boltdb/' /home/semaphore/config.json sed -i 's/\/root\/snap\/semaphore\/common\/repositories/\/tmp\/semaphore/' /home/semaphore/config.json
  6. Créez un nouvel utilisateur et groupe système appelé semaphore avec /home/semaphore comme dossier personnel. adduser --system --group --home /home/semaphore --no-create-home --shell /bin/bash semaphore
  7. Transférez la propriété de /home/semaphore et de tous les fichiers à l’utilisateur système nouvellement créé. chown -R semaphore:semaphore /tmp/semaphore chmod o-rwx /home/semaphore chown -R semaphore:semaphore /home/semaphore

Une fois ces étapes terminées, installez et configurez Semaphore via le gestionnaire de packages en utilisant semaphore comme utilisateur ou groupe de service. Tous les paramètres et les exécutions précédentes devraient apparaître dans la nouvelle instance de SemaphoreUI. Une fois satisfait, l’instance snap peut être supprimée via sudo snap remove semaphore.

J’ai fini par automatiser toutes ces étapes à travers ce fichier bash :

#/bin/bash
#Fichier : migrate-semaphore-snap.sh
#Migrer SemaphoreUI de snap en tant que root vers package/binaire en tant que semaphore
sudo su -l root <<EOF
set -x
snap stop semaphore.semaphored
cp -rf /root/snap/semaphore/common /home/semaphore
mv -f /home/semaphore/repositories /tmp/semaphore
sed -i 's/\/root\/snap\/semaphore\/common\/database.boltdb/\/home\/semaphore\/database.boltdb/' /home/semaphore/config.json
sed -i 's/\/root\/snap\/semaphore\/common\/repositories/\/tmp\/semaphore/' /home/semaphore/config.json
adduser --system --group --home /home/semaphore --no-create-home --shell /bin/bash semaphore
cp /etc/skel/.* /home/semaphore/
chown -R semaphore:semaphore /tmp/semaphore
chmod o-rwx /home/semaphore
chown -R semaphore:semaphore /home/semaphore
EOF