Автоматизировать Git-Pull, застрял с брелок

Я хотел бы создать cronjob для автоматического запуска git-pull каждую минуту. Проблема в том, что мое хранилище является частным, мне пришлось создавать ключи в моей системе (Ubuntu Server 12.04). Я установил связку ключей, и теперь ssh-agent не позволяет системе каждый раз запрашивать у меня пароль. Проблема в том, что он не работает из crontab! Почему из оболочки это работает, а из crontab меня спрашивают пароль?

2 ответа

В своем сценарии вы делаете $(eval ssh-agent)и затем ssh-add <private_key>?

Чтобы проверить, сделайте ssh-add -l перед тем, как делать git pull, убедитесь, что ваши ключи находятся там, где они должны быть.

[править] Попробуйте создать такой скрипт:

#!/bin/bash
set -e 
cd /var/www/GITREPO 
eval $(ssh-agent) 
ssh-add /home/multiformeingegno/.ssh/id_rsa
ssh-add -l
git pull

Лучше , чем cronjob, я предлагаю скрипт hooks/post-receive:

Во-первых, в моем.bashrc:

[ -x /usr/bin/keychain ] && /usr/bin/keychain ~/.ssh/id_rsa || echo "Missing keychain pkg..."
[ -f ~/.keychain/$(hostname)-sh ] && source ~/.keychain/$(hostname)-sh

Который запрашивает парольную фразу при первом входе в систему (необходимо), чтобы ss-агент брелка зарегистрировался, как вы знаете.

Затем в пустом хранилище: /path/to/bare/repo.git/hooks/post-receive:

#!/bin/bash
ssh <host> sh << EOF #I launch sh here for less verbosity on terminal login
. ~/.keychain/\$(hostname)-sh
cd /path/to/cloned/repo.git
unset GIT_DIR
git pull
EOF

не забудьте:

chmod +x /path/to/bare/repo.git/hooks/post-receive

таким образом, из моего клона разработчика из чистого репозитория, производственный автоматически обновляется.

Другие вопросы по тегам