Как предоставить доступ к репозиторию git, используемому Composer


Для управления своими библиотеками я использую Composer, поэтому я устанавливаю зависимости в composer.json, а затем добавляю (всегда в composer.json) удаленные адреса частных репозиториев, в которых находится код.

При запуске composer update/install мне предлагается запросить ключи доступа к этим частным хранилищам.

Теперь я пытаюсь развернуть приложение Symfony 2 в Heroku.

Проблема возникает, когда Heroku пытается загрузить пакеты из моих личных репозиториев: как я могу предоставить Heroku доступ к этим хранилищам?

Вот пример конфигурации composer.json:

"require": {
    "my/private-package": "~1.0",
},
"repositories": [
    {
        "type": "git",
        "url": "https://[email protected]/Aerendir/private-package"
    }
]

Эта конфигурация описана в документации композитора (она также работает без Satis, за исключением "проблемы" с Heroku:) - или другого облачного хостинга, я думаю).

Там, об афинизации, объясняется:

Обратите внимание, что если ваши личные пакеты размещены на GitHub, ваш сервер должен иметь ssh-ключ, который дает ему доступ к этим пакетам, и затем вы должны добавить флаг --no-interaction (или -n) в команду , чтобы убедиться, что она возвращается к аутентификации по ключу ssh вместо запроса пароля. Это также хороший трюк для серверов непрерывной интеграции.

Теперь вопросы 2:

  1. В bitbucket есть ключи развертывания , но я также могу установить ключ SSH.
  2. Как насчет SSH-ключей Heroku?

Итак, как я могу предоставить Героку доступ к моему частные репозитории на BitBucket? Как я могу загрузить частные репозитории, размещенные на BitBucket, с помощью команды composer install, которую Heroku выполняет при развертывании?

Author: Panda, 2015-07-28

3 answers

Правильный ответ - использовать COMPOSER_AUTH в качестве переменной среды, установленной непосредственно на панели управления Heroku.

Значение переменной должно быть примерно таким:

{
   "http-basic":{
      "bitbucket.org":{
         "username":"[email protected]",
         "password":"y0UrH4rdT0Gu3sSp4SsW0rd"
      }
   }
}

Если задано, Composer прочитает его и использует его значение для подключения к BitBucket.

Это правильный подход, поскольку он безопасен и не заставляет вас распространять свои пароли в Интернете с помощью различных сервисов, которые вы используете (или будете использовать) для создания и развертывания вашего приложение.

Ссылки:

COMPOSER_AUTH

 1
Author: Aerendir, 2018-09-05 09:24:53

Устранено/обойдено это ограничение Heroku использования Composer для установки зависимостей в частных репозиториях BitBucket с помощью:

Изменение:

[email protected]:username/repository.git

В моем файле composer.json для:

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://getcomposer.org/doc/06-config.md#bitbucket-oauth

 0
Author: Holtkamp, 2018-09-05 08:12:43

Чтобы https работал с композитором

  1. вы должны создать токен аутентификации в bitbucket.
  2. выполнить composer config -g github-oauth.github.com token

Или

Добавить ssh-ключ сервера в bitbucket

И изменить https://bitbucket.com/organisation/reponame.git

До

[email protected]:organisation/reponame.git

Надеюсь, это поможет

 -1
Author: Nikolai Senkevich, 2015-08-11 13:50:38