8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je viens solliciter votre aide parceque j'ai passé la soirée d'hier à essayer d'autaomatiser un déploiement via git sans succès. Le but à terme serait d'héberger mon dépôt principal sur bitbucket, et que lors d'un push sur la branche principale un hook fasse une requête POST sur un script hébergé sur mon serveur de prod, qui à son tour lance un pull sur le dépôt bitbucket.

Je suis hébergé en mutualisé chez 1and1 qui propose un accès ssh et git en version 1.7.2.5.
J'ai configuré git dessus (git.user et git.email), généré une paire de clés SSH, et ajouté ma clé publique en tant que "deployment keys" dans bitbucket.
Si je me connecte en SSH et que je fais "git pull git pull git@bitbucket.org:xx/yy.git" ça fonctionne très bien.

Par contre si je fais un script php qui ressemble à ça

$command = "git pull git pull git@bitbucket.org:xx/yy.git";
$result = shell_exec($command);
echo htmlentities(trim($result));

il ne se passe rien ! En fait le shell_exec ne fait rien avec git pull. (si je remplace la commande par "git --version" Il m'affiche bien la version, et si je fais "whoami" ça m'affiche le même nom d'utilisateur que quand je me connecte en ssh.


Du coup je suis complètement bloqué à cause de ça !

Quelqu'un pourrait m'aider ? Smiley sweatdrop

Merci d'avance !
T'es sûr d'avoir les droits d'écriture (le process php) et que le processus n'est pas trop long ?


Je suis pas certain que ce soit la meilleure approche (de puller automatiquement).
Tu seras peut être amener à commiter sans vouloir déployer immédiatement.

J'utilise fabric pour déployer et administrer mes hébergements. C'est du python, mais ton serveur n'a pas besoin de le supporter.

Le principe est d'écrire des scripts pour pusher, déployer et de les lancer dès que tu en as besoin.
Il y a des alternatives en ruby, et peut être même en php.
Merci pour ta réponse =)

paolo a écrit :
T'es sûr d'avoir les droits d'écriture (le process php) et que le processus n'est pas trop long ?

Pour les droits d'écriture je suppose mais je vérifierai ce soir. Sinon le processus ça devrait passer, pour l'instant le pull prend à peine une seconde.

a écrit :
Je suis pas certain que ce soit la meilleure approche (de puller automatiquement).
Tu seras peut être amener à commiter sans vouloir déployer immédiatement.

Tel que j'avais imaginé les choses, on ferait des commits sur la branche main uniquement quand on veut déployer (sur un serveur de test), et sur les autres branches quand on ne veut pas déployer. Après c'est peut-être pas la meilleure technique, c'est la première fois que je vais faire un projet en utilisant git à plusieurs.

a écrit :
J'utilise fabric pour déployer et administrer mes hébergements. C'est du python, mais ton serveur n'a pas besoin de le supporter.
Le principe est d'écrire des scripts pour pusher, déployer et de les lancer dès que tu en as besoin.
Il y a des alternatives en ruby, et peut être même en php.

Je vais regarder de ce côté, ça peut être intéressant (même si c'est pas vraiment ce que je cherchais à faire à l'origine ^^)


En fait je crois que le plus simple serait d'utiliser Beanstalk qui a l'air de faire exactement ce que je veux, mais 15 dollars par mois ça me fait un poil cher...
Je ne suis pas compétent en php, mais j'ai trouvé pas mal d'exemples tels que celui-ci.
Sinon tu dois pouvoir regarder dans les logs ce qui se passe pour avoir une piste.