3.7 KiB
3.7 KiB
CI/CD — Gitea Actions → Raspberry Pi
Ce que ça fait
À chaque git push sur main, Gitea :
- Vérifie la syntaxe Python (
lint) - SSH sur le Pi →
git pull+pip install+systemctl restart
Déclenchement manuel possible (avec option "installation complète").
1. Préparer le Pi
Cloner le dépôt la première fois
cd /home/pi
git clone https://gitea.lespatas.ovh/admin/photoBooth.git jh-photomaton
cd jh-photomaton
sudo bash scripts/install.sh
Installer la règle sudoers (permet au CI de restart sans mot de passe)
sudo cp scripts/sudoers-jh-photomaton /etc/sudoers.d/jh-photomaton
sudo chmod 440 /etc/sudoers.d/jh-photomaton
sudo visudo -c # doit afficher "parsed OK"
Générer une clé SSH dédiée au CI/CD
Sur le Pi :
ssh-keygen -t ed25519 -C "gitea-cicd-jh-photomaton" -f ~/.ssh/gitea_deploy -N ""
cat ~/.ssh/gitea_deploy.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# Afficher la clé privée à copier dans Gitea :
cat ~/.ssh/gitea_deploy
2. Configurer les secrets dans Gitea
Settings → Secrets and Variables → Actions → New Secret
| Nom | Valeur |
|---|---|
PI_SSH_HOST |
IP du Pi (ex: 192.168.1.42) ou hostname si résolvable depuis le serveur Gitea |
PI_SSH_USER |
pi |
PI_SSH_KEY |
Contenu de ~/.ssh/gitea_deploy (clé privée, commence par -----BEGIN...) |
PI_SSH_PORT |
22 (optionnel) |
3. Configurer le runner Gitea Actions
Le workflow nécessite un runner Gitea Actions avec le label ubuntu-latest.
Option A — Runner sur le serveur Gitea (recommandé)
Sur le serveur qui héberge Gitea :
# Télécharger l'act runner Gitea
wget https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-amd64 -O act_runner
chmod +x act_runner
# Enregistrer le runner (token dans Gitea : Settings → Actions → Runners)
./act_runner register --instance https://gitea.lespatas.ovh \
--token VOTRE_TOKEN --name "gitea-server" --labels "ubuntu-latest:docker://node:16-bullseye"
# Démarrer
./act_runner daemon
Option B — Runner directement sur le Pi (plus simple, pas de Docker)
wget https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-arm64 -O act_runner
chmod +x act_runner
./act_runner register --instance https://gitea.lespatas.ovh \
--token VOTRE_TOKEN --name "pi-runner" --labels "ubuntu-latest:host"
./act_runner daemon &
Avec
ubuntu-latest:host, les jobs s'exécutent directement sur le Pi sans Docker. Dans ce cas, le job SSH est superflu — on peut simplifier le workflow pour exécuterscripts/update.shdirectement.
4. Premier push et vérification
git add .
git commit -m "feat: ajout CI/CD Gitea Actions"
git push origin main
Suivre l'exécution dans Gitea : Repository → Actions.
5. Déclenchement manuel (avec installation forcée)
Dans Gitea : Actions → Deploy — JH Photomaton → Run workflow
Choisir force_install = true pour relancer install.sh complet (re-pip, re-service).
Résolution de problèmes
| Problème | Solution |
|---|---|
Host key verification failed |
Ajouter le Pi dans ~/.ssh/known_hosts du runner |
Permission denied (publickey) |
Vérifier que la clé publique est dans authorized_keys du Pi |
sudo: systemctl: command not found |
Utiliser /bin/systemctl (déjà dans update.sh) |
git stash pop conflit |
SSH sur le Pi, résoudre manuellement : cd /home/pi/jh-photomaton && git checkout -- config/settings.yaml |
| Le runner ne démarre pas | Vérifier le token dans gitea.lespatas.ovh/admin/photoBooth/settings/actions/runners |