Intégration GitHub
CI/CD avec des runners self-hosted
Siovos peut déployer des runners GitHub Actions sur votre serveur. Vos builds s'exécutent chez vous et déploient directement sur votre cluster Kubernetes.
Le principe#
Quand vous pushez du code sur GitHub :
- GitHub déclenche votre workflow
- Le runner sur votre serveur exécute le build
- L'image Docker est pushée sur Harbor
- L'app est déployée sur K3s
Tout reste privé. Votre code ne quitte jamais votre infrastructure.
Configuration pendant le déploiement#
Dans le wizard, à l'étape Intégration GitHub :
- Entrez votre Personal Access Token GitHub
- Sélectionnez les repos à connecter
- Terminez le déploiement
Les runners sont automatiquement enregistrés sur GitHub.
Créer un token GitHub#
Allez sur GitHub Settings → Developer settings → Personal access tokens et créez un token avec les permissions :
repo— accès aux repos privésworkflow— modifier les workflowsadmin:org→read:org— si vous utilisez des repos d'organisation
Exemple de workflow#
Créez .github/workflows/deploy.yml dans votre repo :
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Build & push
run: |
docker build -t registry.internal/myapp:${{ github.sha }} .
docker push registry.internal/myapp:${{ github.sha }}
- name: Deploy
run: |
kubectl set image deployment/myapp app=registry.internal/myapp:${{ github.sha }}Le point clé : runs-on: self-hosted pour utiliser votre runner.
Vérifier le statut du runner#
Dans Siovos Desktop, allez dans votre infrastructure → onglet Services. Le runner doit apparaître comme "Online".
Vous pouvez aussi vérifier sur GitHub : Repository → Settings → Actions → Runners.
Ajouter des repos plus tard#
Depuis votre infrastructure → onglet Actions → Configurer les runners GitHub, vous pouvez connecter d'autres repos à tout moment.
Problèmes fréquents#
Runner "Offline" — Connectez-vous en SSH sur votre serveur et vérifiez le service :
sudo systemctl status actions-runnerPermission denied sur Harbor — Ajoutez HARBOR_PASSWORD dans les secrets de votre repo (Settings → Secrets → Actions).
kubectl ne fonctionne pas — Vérifiez que /home/runner/.kube/config existe et est valide sur votre serveur.