SVN 및 Git을 사용한 Crontab

SVN 및 Git을 사용한 Crontab

SVN과 Git에 모두 있는 저장소가 있습니다. 내 사용자 이름은 guyfawkes이고 내 홈 디렉터리에는 내 모든 저장소가 포함된 www 폴더가 있습니다. 이 디렉터리에는 update.sh 파일도 있습니다.

[guyfawkes@guyfawkes-desktop ~/www]$ cat update.sh
cd /home/guyfawkes/www
cd crm
echo "upd crm"
svn up
echo "update crm completed"
echo "-------"
cd ../crm_sql
echo "upd sql"
svn up
echo "update sql completed"
echo "-------"
cd ../crm_old
echo "upd old"
svn up
echo "update old completed"
echo "-------"
cd ../mysqldiff
echo "upd mysqldiff"
git pull sotmarket master
echo "update mysqlidff completed"
git push origin master
echo "push to github completed"
echo "-------"
cd ../mysql-migration-manager
echo "upd mmmm"
git pull
echo "mmm updated"
cd data
echo "upd data"
git pull
echo "data updated"

내 크론탭은 다음과 같습니다

[guyfawkes@guyfawkes-desktop ~/www]$ crontab -l
*/5 * * * * /home/guyfawkes/www/update.sh

따라서 svn repos와 완벽하게 작동하지만 /var/spool/mail/guyfawkes(cron에서)에 다음 메일이 있습니다.

X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/guyfawkes>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=guyfawkes>
X-Cron-Env: <USER=guyfawkes>

upd crm

Fetching external item into 'public/old'
External at revision 32674.

At revision 483.
update crm completed
-------
upd sql
At revision 29.
update sql completed
-------
upd old
At revision 32674.
update old completed
-------
upd mysqldiff
Permission denied (publickey,keyboard-interactive).
fatal: The remote end hung up unexpectedly
update mysqlidff completed
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
push to github completed
-------
upd mmmm
Permission denied (publickey,keyboard-interactive).
fatal: The remote end hung up unexpectedly
mmm updated
upd data
Permission denied (publickey,keyboard-interactive).
fatal: The remote end hung up unexpectedly
data updated

어떻게 해결할 수 있나요?

답변1

문제는 SSH 키가 필요한 github에서 업데이트하려고 한다는 것입니다. 서버에 비밀번호 없이 전용 SSH 키를 생성하고 이를 github 계정에 추가하거나 http-readonly uri를 사용하여 저장소를 업데이트하세요.

git pull --mirror https://github.com/account/repository.git

관련 정보