J'ai récemment mis en place un dépôt git distant sur un serveur pour une application web fonctionnant en tant que service Upstart. Je souhaite utiliser le hook post-réception pour déclencher les actions requises pour mettre à jour le code d'application et arrêter puis redémarrer le service upstart. Voici mon fichier repo.git / hooks / post-receive:
#!/bin/bash
export GIT_WORK_TREE=/var/www/current/myapp/
echo "Checking out new files and restarting app"
echo $USER
git checkout -f
sudo /sbin/stop myapp-service
sudo /sbin/start myapp-service
Sur la base des informations que j'ai lues ici: askUbuntu.com , la façon d'obtenir les commandes upstart à exécuter en tant que root est d'éditer mon fichier visudo. Voici l'extrait pertinent:
%sudo ALL=(ALL:ALL) ALL
admin ALL=(ALL:ALL) NOPASSWD: /sbin/start myapp-service /sbin/stop myapp-service
Mais quand je pousse sur la télécommande, j'obtiens une sortie comme:
$ git commit -am "test" && git push prod master
[master 59ffccd] test
1 file changed, 1 insertion(+), 1 deletion(-)
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 544 bytes, done.
Total 6 (delta 4), reused 0 (delta 0)
remote: Checking out new files on production and restarting app
remote: admin
remote:
remote: sudo: no tty present and no askpass program specified
remote: Sorry, try again.
J'ai vérifié que l'utilisateur correct exécute le script de post-réception (admin, comme indiqué ci-dessus).
Quelqu'un peut-il m'aider à arrêter puis à démarrer le travail Upstart dans un script de hook git post-receive? Les scripts javascript Python, PHP ou node.js seraient également acceptables s'ils pouvaient exécuter la commande upstart plus facilement que bash (je suis un débutant bash)
J'ai regardé dans mon journal d'authentification et voici ce que j'ai:
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): auth could not identify password for [admin]
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): conversation failed
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): auth could not identify password for [admin]
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): conversation failed
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): auth could not identify password for [admin]
Apr 24 19:35:21 myhost01 sudo: admin : 3 incorrect password attempts ; TTY=unknown ; PWD=/home/admin/myapp.git ; USER=root ; COMMAND=/s$
Apr 24 19:35:21 myhost01 sudo: unable to execute /usr/sbin/sendmail: No such file or directory
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): conversation failed