Как предоставить доступ к репозиторию git, который используется Composer
для управления моими библиотеками я использую Composer, поэтому я устанавливаю зависимости в composer.json
а затем добавить (когда-либо в composer.json
) удаленные адреса частных репозиториев, в которых находится код.
при работе composer update/install
мне предлагается запросить ключи доступа к этим частным репозиториям.
теперь я пытаюсь развернуть приложение Symfony 2 в Heroku.
проблема возникает, когда Heroku пытается загрузить пакеты из моих частных репозиториев: как я могу предоставить Heroku доступ к этим репозиториям?
вот пример композитора.конфигурация json:
"require": {
"my/private-package": "~1.0",
},
"repositories": [
{
"type": "git",
"url": "https://Aerendir@bitbucket.org/Aerendir/private-package"
}
]
эта конфигурация объясняется в документации композитора (он работает также без Satis, за исключением "проблемы" с Heroku :) - или другим облачным хостингом, я думаю).
там, об афинянстве, объясняется:
обратите внимание, что если ваши личные пакеты размещены на GitHub, ваш сервер должен иметь ключ ssh, который дает ему доступ к этим пакетам, и затем вы должны добавить флаг --no-interaction (или-n) в команду чтобы убедиться, что он возвращается к аутентификации ключа ssh вместо запрос пароля. Это также хороший трюк для непрерывного сервер интеграции.
теперь, вопросы 2:
- BitBucket имеет ключи развертывания но я также могу установить SSH ключ.
- что о Heroku SSH ключи?
Итак, как я могу дать Heroku доступ к моим частным репозиториям на BitBucket?
как я могу загрузить частные репозитории, размещенные на BitBucket из composer install
команда, которую Heroku делает при развертывании?
3 ответов
правильный ответ, используя COMPOSER_AUTH
в качестве переменной среды, установленной непосредственно в Heroku dashboard.
значение переменной должно быть примерно таким:
{
"http-basic":{
"bitbucket.org":{
"username":"hello@aerendir.me",
"password":"y0UrH4rdT0Gu3sSp4SsW0rd"
}
}
}
Если установлено, Composer прочитает его и использует его значение для подключения к BitBucket.
это правильный подход, поскольку он безопасен и не заставляет вас делать ваши пароли в интернете через различные службы, которые вы используете (или будете использовать) для создания и развертывания приложение.
ссылки:
разрешено / обошло это ограничение Heroku использования Composer для установки зависимостей в частных репозиториях BitBucket:
изменения:
git@bitbucket.org:username/repository.git
в мой композитор.json to:
https://bitbucket.org/username/repository.git
при работе composer update --no-dev
, Composer запросит у вас комбинацию имени пользователя / пароля для аутентификации. Следующий композитор предложит вам сохранить эти учетные данные в /Users/username/.composer/auth.json
см.: https://getcomposer.org/doc/articles/http-basic-authentication.md
выберите "Y", чтобы создать этот файл.
теперь скопируйте созданный auth.json
в папку проекта. Используйте git для добавления, фиксации и нажатия на Heroku.
это работает для меня, к сожалению,auth.json
хранит ваш пароль в обычном тексте, поэтому для меня это не идеальное решение...
кто-то из Heroku контролирует эту проблему? При использовании http://www.CloudControl.com можно проверить детали приложения, которое включает в себя открытый ключ. Добавьте это в BitBucket, и это сработает. Либо это, либо композитор правильно использует открытые ключи, которые можно добавить в Heroku...
обновление: непосредственно в composer.в JSON
другой вариант (просто) включить участок в composer.json
файл, который используется Heroku для установки зависимостей.
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "key-goes-here",
"consumer-secret": "secret-goes-here"
}
}
также см.
чтобы сделать https работает с composer
- вы должны создать токен auth в bitbucket.
- выполнить
composer config -g github-oauth.github.com token
или
добавить ключ ssh сервера в bitbucket
и изменить
https://bitbucket.com/organisation/reponame.git
to
git@bitbucket.com:organisation/reponame.git
надеюсь, что это помогает