Saya baru-baru ini membuat repo git jarak jauh pada server untuk aplikasi web yang berjalan sebagai layanan pemula. Saya ingin menggunakan kait pasca-terima untuk memicu tindakan yang diperlukan untuk memperbarui kode aplikasi dan berhenti kemudian mulai ulang layanan pemula. Ini adalah file repo.git / hooks / post-accept saya:
#!/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
Berdasarkan info yang saya baca di sini: askUbuntu.com , cara untuk mendapatkan perintah pemula untuk dieksekusi sebagai root adalah dengan mengedit file visudo saya. Berikut cuplikan yang relevan:
%sudo ALL=(ALL:ALL) ALL
admin ALL=(ALL:ALL) NOPASSWD: /sbin/start myapp-service /sbin/stop myapp-service
Tetapi ketika saya git mendorong ke remote, saya mendapatkan output seperti:
$ 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.
Saya telah memeriksa bahwa pengguna yang benar sedang menjalankan skrip pasca-terima (admin, seperti yang digaungkan di atas).
Dapatkah seseorang membantu saya berhenti dan kemudian memulai pekerjaan pemula dalam skrip kait pasca-terima git? Skrip javascript Python, PHP, atau node.js juga akan dapat diterima jika mereka dapat mengeksekusi perintah pemula lebih mudah daripada bash (Saya pemula bash)
Saya melihat log auth dan inilah yang saya miliki:
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