2013-10-09 5 views
2

Я пытаюсь обновить свой приватный репозиторий через работу cron, но ничего похожего не происходит. Я использую Satis для создания репозитория для своих личных пакетов.Обновление Satis через cronjob

Я могу сделать это вручную, войдя в свой аккаунт через 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 

я что-нибудь не хватает?

UPDATE

Это SSH аутентификации, как я получил эту ошибку по электронной почте (сокращенный вариант)

Reading composer.json of vendor/package (master)
Failed to update [email protected]:vendor/package.git, package information from this repository may be outdated (Permission denied (publickey). fatal: The remote end hung up unexpectedly error: Could not fetch origin)

В документации это говорит об использовании -n использовать SSH ключ, но Я использую его.

Любые идеи?

UPDATE

Мысли Я хотел бы добавить мою структуру файла безупречной:

{ 
    "name": "Name Of My Repo", 
    "homepage": "http://repodomain.co.uk", 
    "repositories": [ 
     { "type": "vcs", "url": "[email protected]:vendor/package.git" } 
    ], 
    "require-all": true 
} 

действительно застрял на этом, документации дерьмо!

ответ

3

Вы правы, что проблема SSH-аутентификации является проблемой здесь.

Когда cronjob работает, он должен каким-то образом получить доступ к вашему репозиторию Bitbucket. Вы решили использовать протокол «git», который использует SSH. При использовании SSH использование аутентификации на основе ключей намного лучше, чем использование паролей - и когда дело доходит до git repos, это единственный способ в большинстве случаев в зависимости от хостинга.

Либо вы ставите свой секретный ключ на этот сервер cron, чтобы получить доступ к Bitbucket (может быть, плохая идея), либо вы создаете новую пару ключей и используете это, чтобы разрешить доступ к вашему репо (лучше, если только вы не испытываете некоторые ограничения вашей учетной записи bitbucket, например, слишком много пользователей, если этот ключ считается пользователем, - с другой стороны, вы можете ограничить этот ключ только чтением, а не писать).

Убедитесь, что пользователь, который используется для запуска вашей cronjob, использует эти ключи, например. вы должны иметь возможность запускать скрипт вручную без какого-либо агента, и он должен завершиться без запроса паролей. Правильным местом для закрытого ключа является ~/.ssh, открытый ключ отправляется в Bitbucket. После этого все должно отлично работать в кроне.

Другой способ - использовать другой протокол (например, HTTPS) для доступа к репо и посмотреть, что произойдет.

+0

нормально, так мне нужно войти в мой сервер с правами администратора и создать SSH-ключи? Поскольку я создал cronjob в качестве пользователя учетной записи и зарегистрировался в учетной записи через SSH как пользователь и создал SSH-ключ, который, как указано выше, не работает. Спасибо, что нашли время ответить. –

+0

только что проверено, а мои ключи SSH расположены по адресу '/ home/accountname/.ssh' –

+0

. Вам нужно иметь ключи как пользователь, который запускает cronjob. Является ли cronjob запущенным как root? – Sven

Смежные вопросы