Лучшая альтернатива пакетному файлу для автоматического Git-Pull на сервере Windows
У меня есть набор веб-серверов, и для поддержания актуальности файлов на сервере я использую запланированное задание Windows. Задача вызывает командный файл, который выполняет команду git-pull.
Это кажется достаточно простым, но я использую ключи SSH для аутентификации на git-сервере. Пока что единственный способ, который мне удалось выяснить для передачи этих ключей в git - это использовать pageant.exe
, В результате мой командный файл содержит следующие команды:
"C:\Program Files\TortoiseGit\bin\pageant.exe" "C:\privateKey.ppk"
set local
set HOME=c:\
set GIT_SSH=C:\Program Files\TortoiseGit\bin\TortoisePLink.exe
cd c:\webserverfiles
git pull -v --progress origin master
Это работает по большей части; однако основная проблема заключается в том, что просмотр страницы выполняется в фоновом режиме, и при первом выполнении этого пакетного файла первая строка зависает на неопределенный срок. Чтобы обойти это, я вручную запускаю задачу, убиваю ее, а затем запускаю автоматически. Но в случае сбоя программы Pageant или перезагрузки сервера мои файлы больше не синхронизируются на этом сервере из-за проблемы с первой строкой (которая может быть большой проблемой в циклическом сценарии).
Есть какие-нибудь предложения относительно того, как улучшить эту схему? Я не могу переключиться на git на основе https.
1 ответ
Я не понимаю ситуации, когда вам пришлось бы устанавливать специальные настройки среды, чтобы заставить работать команды Git. Вы уверены, что правильно настроили?
Я обычно рекомендую разработчикам
- Установить msysgit
- Установите TortoiseGit.
- При установке TortoiseGit, они должны выбрать OpenSSH (не TortoiseGitPLink).
- Бежать
ssh-keygen.exe -C "firstname.lastname@domain.com"
генерировать ключи в$HOME\.ssh
папка - Скопируйте открытый ключ в
.ssh\id_rsa.pub
на сервер Git.
OpenSSH не требует pageant.exe
,
После этой настройки дополнительные параметры среды не требуются. (Переменные SSH_AGENT_PID и SSH_AUTH_SOCK устанавливаются платформой). git clone ssh://xxxx
должен работать сразу.