Как ввести пароль для git push из сценария без использования ключей SSH?

Мне нужно написать сценарий, который может передавать тег с сервера сборки на сервер git БЕЗ ИСПОЛЬЗОВАНИЯ КЛЮЧЕЙ SSH.

Больше людей имеют доступ к серверу сборки, чем к серверу git, поэтому ключи SSH не будут работать, потому что в этом случае любой сможет отправить запрос на сервер git без указания своих учетных данных.

Сценарий будет запускаться из Jenkins / Hudson, который запрашивает у пользователя имя пользователя и пароль, когда начинает сборку, а затем передает их как переменные среды в сценарий.

Проблема в том, что я не могу найти способ заставить git принимать пароль программно.

Я пробовал:

echo %password% | git push

, а также

git push < tempfilewithpassword.txt (not that writing the password to a temp file is a good idea anyway).

Но в обоих случаях git все равно запрашивает пароль.

ОБНОВЛЕНИЕ: Я также пробовал сценарий python, перенаправляя stdin и stdout, не повезло, все равно получаю приглашение.

ОБНОВЛЕНИЕ: Кроме того, я попробовал Expect для Windows, который НЕ получает подсказку ни в консоли, ни в самом Expect (т.е. Expect никогда не видит никаких выходных данных из git, в конечном итоге просто истекает время ожидания).

Есть предложения?

ПРИМЕЧАНИЕ: Позвольте мне уточнить, потому что люди действительно зацикливаются на использовании ключей SSH.

Требования:

  • Учетные данные должны быть указаны в начале сборки (Дженкинс принимает их и передает в мой сценарий).
  • Учетные данные действуют ТОЛЬКО на время этой единственной сборки.
  • Учетные данные могут изменяться от одной сборки к другой.

Насколько мне известно, НИЧЕГО, что связано с настройкой ключей SSH, не удовлетворит этого (если только я не требую, чтобы пользователь загружал свой ключ SSH при запуске сценария, что неудобно).

7
задан Eggplant Jeff 20 May 2011 в 17:15
поделиться