как передать ввод в приложение cli во время выполнения - PullRequest
0 голосов
/ 03 октября 2018

У меня каверзная проблема в моем проекте.У меня приложение работает на VDS.Я установил это приложение с помощью git и composer.Этот проект имеет git-репозиторий, как и локальный.

Я пытаюсь создать бот для автоматического обновления. Этот бот получит последний коммит / тэг от gitlab и получит его.

Я могу использовать задание nodejs или php cron.

Но команда git pull запрашивает мое имя пользователя и пароль.Я не могу установить расширение php_expect.Попробовал эту библиотеку yuloh/expect, но она не перехватила ввод имени пользователя.

Итак, вот мой вопрос: как и какой метод мне реализовать для запуска этой команды git pull и передачи имени пользователя и пароля?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Решено

Для получения новых обновлений ...

git pull https://username:password@gitprovider/vendor/repository "version_code":"version_code"Для объединения обновлений с приложением конечного пользователя.

git merge "version_code":master

это два вместе полностью обновляет приложение с новой версией.

Что касается защиты паролем, мы собираемся использовать ioncube для файла cron.

0 голосов
/ 03 октября 2018

если я полностью понял ваш вопрос, вы можете попробовать это:

  • вы можете поместить пароль в файл .netrc (_netrc на окнах).Оттуда это будет взято автоматически.Он перейдет в вашу домашнюю папку с 600 разрешениями.

  • Вы также можете просто клонировать репо с https://user:pass@domain/repo, но это не очень рекомендуется, так как это покажет вашему пользователю / пассуру многомест ...

  • новая опция - использовать помощник по учетным данным .Обратите внимание, что учетные данные будут храниться в виде открытого текста в вашей локальной конфигурации с использованием стандартного помощника учетных данных.Помощник по учетным данным с wincred также можно использовать в Windows.

Примеры использования помощника по учетным данным

git config credential.helper store - stores the credentials indefinitely.
git config credential.helper 'cache --timeout=3600'- stores for 60 minutes

Для доступа на основе ssh вы должны использовать ssh agentэто обеспечит ключ ssh при необходимости.Это потребует генерации ключей на вашем компьютере, хранения открытого ключа на удаленном сервере и добавления закрытого ключа в соответствующее хранилище ключей.

...