Невозможно выполнить команды git с помощью crontab - PullRequest
0 голосов
/ 03 мая 2019

Я настраиваю сервер и хочу, чтобы репозиторий git на моем сервере соответствовал исходному серверу (Github). Я попытался запустить задание cron, которое каждую минуту обновляет репозиторий на сервере. Это было успешно на моем компьютере Mac.

кронтаб:

* * * * * bash /home/ubuntu/venv/App/deployer.bash >> /home/ubuntu/venv/App/Logs/deployer.txt 2>&1

Вот часть, которая выходит из строя на сервере:

git fetch --all 
git reset --hard origin/master

Ошибка:

Fetching origin
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.
error: Could not fetch origin

Все отлично работает за пределами crontab. Например : Я могу делать все команды git в git repo без sudo. Используя sudo, я получаю ту же ошибку, что и cronjob.

Обновление:

Разобрался, что вызвало проблему:

2> & 1 в выражении crontab писал стандартную ошибку, и это было очень правильно. Когда я запускал команды вне crontab, он никогда не запрашивал аутентификацию. Но в crontab при каждом выполнении команды запрашивают аутентификацию

Теперь кто-нибудь может объяснить, почему это может вызвать такую ​​ошибку?

1 Ответ

0 голосов
/ 22 мая 2019

Добавление ключа ssh к ssh-agent каждый раз перед выполнением команды git сработало. Это то, что я сделал.

Я добавил следующую команду в cronjob:

eval `ssh-agent -s` && ssh-add ~/.ssh/id_rsa && ssh-add -l
git fetch --all && sleep 2s && git reset --hard origin/master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...