Сатис обновление через cronjob
Я пытаюсь обновить свой личный репозиторий с помощью задания cron, но, похоже, ничего не происходит. Я использую Satis для создания хранилища для моих личных пакетов.
Я могу сделать это вручную, войдя в свою учетную запись через SSH и запустив:
php bin/satis build satis.json ./ -n
который обновляет все отлично, кроме меня, чтобы ввести мою фразу-пароль миллион раз. Я могу обойти это с помощью SSH Agent
и думаю, что это может быть моей проблемой...
php /home/accountname/public_html/bin/satis build /home/accountname/public_html/satis.json /home/accountname/public_html/ -n
Я что-то пропустил?
ОБНОВИТЬ
Это SSH-аутентификация, так как я получил эту ошибку по электронной почте (сокращенная версия)
Чтение composer.json поставщика / пакета (мастер)
Не удалось обновить git@bitbucket.org: vendor / package.git, информация о пакете из этого репозитория может быть устаревшей (Отказано в доступе (publickey). Fatal: На удаленном конце произошла непредвиденная ошибка: ошибка: не удалось получить источник)
В документах говорится об использовании -n
использовать ключ SSH, но я его использую.
Есть идеи?
ОБНОВИТЬ
Подумал, что я добавлю свою структуру файла удовлетворительно:
{
"name": "Name Of My Repo",
"homepage": "http://repodomain.co.uk",
"repositories": [
{ "type": "vcs", "url": "git@bitbucket.org:vendor/package.git" }
],
"require-all": true
}
действительно застрял на этом, документация дерьмо!
1 ответ
Вы правы, что проблема заключается в SSH-аутентификации.
Когда cronjob работает, он должен каким-то образом получить доступ к вашему репозиторию Bitbucket. Вы решили использовать протокол "git", который использует SSH. При использовании SSH аутентификация на основе ключей намного лучше, чем использование паролей, а когда дело доходит до git-репозиториев, в большинстве случаев это единственный способ в зависимости от хостинга.
Либо вы помещаете свой закрытый ключ на этот сервер cron, чтобы получить доступ к Bitbucket (может быть, это плохая идея), либо вы создаете новую пару ключей и используете ее для предоставления доступа к вашему репо (лучше, если вы не испытываете некоторые ограничения вашего Учетная запись bitbucket, как и слишком много пользователей, если этот ключ считается пользователем, - с другой стороны, вы можете ограничить этот ключ только разрешением читать, а не писать).
Убедитесь, что пользователь, который запускает ваш cronjob, использует эти ключи, например, вы должны иметь возможность вручную запустить скрипт без какого-либо агента, и он должен завершиться без запроса паролей. Правильное место для закрытого ключа ~/.ssh
открытый ключ отправляется в Bitbucket. После этого все должно отлично работать в cronjob.
Другой способ - использовать другой протокол (например, HTTPS) для доступа к репо и посмотреть, что произойдет.