Contexte
Ce plugin permet d’associer un répertoire à un dépôt GIT. Parmi les cas d’usage on peut entre autre identifier :
- mise à jour dynamique d’un squelettes
- mise à jour dynamique d’un plugin
- mise à jour de n’importe quel répertoire accessible depuis la racine du site
Prérequis
Le serveur hébergeant le site doit autoriser :
- la commande
git
- l’exécution de la fonction PHP
exec()
Installation
Il s’agit d’un plugin SPIP, il s’installe comme n’importe quel plugin.
Configuration
Le plugin peut suivre un unique répertoire. La configuration permet de :
- définir le répertoire à synchroniser
- déclarer le dépôt distant
- de choisir la branche à suivre
- un token (uuid , mot de passe, ...) de sécurité pour autoriser la mise à jour depuis des appels légitimes
Exemple
Nous souhaitons travailler sur le thème Nezu
Nous configurerons ainsi notre site :
La mise à jour se fait depuis l’url https://www.monsite.tld?page=sync_from_forge&token=
Webhook ou Cron
Dans l’exemple précédent nous avons au moins 3 possibilités pour mettre à jour le projet :
* appel manuel de l’url, on choisit quand on veut mettre à jour le répertoire en exécutant l’url depuis son navigateur ;
* appel via cron, on peut depuis son serveur par exemple AlternC, déclarer l’URL et lancer une mise à jour horaire ;
* appel depuis un webhook, par exemple Gitea, déclarer un appel au plugin après chaque commit
Discussions by date of activity
2 discussions
Salut,
j’ai voulu testé ce plugin car ça parait bien pratique mais, quand je lance l’url indiquée sur la page de config, j’ai juste un message
Array ( ) 1
et la synchro ne se fait pas.J’ai bien activé les fonctions
exec, shell_exec, popen, proc_open, pcntl_exec
(c’est un pack sur les mutus Infomaniak) et git est actif (en tout cas, je peux faire du git en cli sur l’hébergement).La doc ne précise pas s’il faut avoir le dépôt sur l’hébergement au préalable (en git ou non) ou pas, donc j’ai testé les 3 options (pas de dépôt, dépôt cloné avec git ou simple copié hors git).
Bonjour
Alors premier point, oui la page d’appel retourne du php brut....
Je n’ai pas travaillé ce point vu que je lance via un webhook donc l’important est d’avoir une réponse.
Pour se faire une idée un cas sans traitement git donnerait :
En relisant mes tests, je pense que tu as déjà le répertoire cible existant et qu’il n’est pas un clone git.
Peux tu essayer en ciblant un répertoire inexistant ?
Reply to this message
Ça a l’air pratique, merci, mais par contre c’est dommage, il n’y a pas de raison que ce soit bloqué à un unique dossier pour l’ensemble du site. Ce serait mieux si on pouvait configurer un tableau d’autant de dossiers qu’on veut (pas forcément avec une table dédiée, ça peut rester en spip_metas/ecrire_config mais dans un tableau de tableaux).
Sinon au niveau technique, la mise à jour devrait être en action PHP et non pas dans une page= squelettes, qui ne sont pas fait pour ça du tout. (Et dans l’action ça serait bien de pouvoir tester si on a le droit de lancer ça, facile quand c’est en synchrone, tester l’utilisateur connecté à cet instant T, mais quand c’est en push webhook depuis une autre appli là faut trouver un autre moyen).
Sinon bizarre de faire une capture de l’interface avec strictement aucune des chaines de langue définies. :)
Je me suis fait la même réflexion : ça a l’air déjà bien comme ça, avec 3 modes de mises à jour, mais ce serait top de pouvoir gérer de multiples dépôts.
Bonjour
Le principe de base c’est d’avoir un truc qui fonctionne correctement, réponde à mon besoin de base et faire évoluer par la suite. Dans l’idée j’ai appliqué la règle des 80/20, 80% du besoin couvert par 20% d’énergie dépensée.
Le fait de pouvoir gérer plusieurs dossiers est prévu, j’en ai le besoin. Cela n’est pas bloqué, j’ai juste répondu au besoin initial. Le reste évoluera tranquillement par itération progressive.
Je pensais utiliser les casiers de config (il me semble qu’on utilise ce terme).
Le principe de base est de permettre une mise à jour d’un dépôt git depuis une action externe (cron, webhook, ...). Vérifier que la personne soit connectée avant de lancer la mise à jour n’a aucun sens, par principe la personne ne sera pas connectée..
Bien sûr, il est toujours possible de proposer une amélioration concernant le contrôle des authentification mais je n’en vois pas l’intérêt en l’état. Du moins ainsi je n’ai pas compris le besoin exprimé.
Concernant la proposition d’utiliser des actions, je me suis basé sur des exemples trouvés dans d’autres plugins. Je ne suis pas développeur SPIP, je me suis appuyé sur un exemple que je comprenais et qui répondais au besoin.
Je prend toute suggestion d’amélioration, N’ayant aucune idée du fonctionnement des actions, j’ai fait avec ce que j’ai compris.
Pour les traductions, c’est comme indiqué au début, pour que cela soit opérationnel, les traductions n’avaient aucune utilité. J’ai ajouté ceci entre temps pour les autres personnes et proposé une première version publique.
Bonjour
Capture d’écran actualisée avec les chaînes de langues
Parfait, merci pour ton retour.
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
