如何提供对Composer使用的git存储库的访问

Aer*_*dir 6 git deployment ssh heroku composer-php

为了管理我的库我使用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://Aerendir@bitbucket.org/Aerendir/private-package"
    }
]
Run Code Online (Sandbox Code Playgroud)

这个配置在作曲家文档中有解释(它也可以在没有Satis的情况下工作,除了Heroku :)的"问题" - 或者我认为的其他云托管.

在那里,关于身份验证,解释:

请注意,如果您的私有软件包托管在GitHub上,您的服务器应该有一个ssh密钥,使其能够访问这些软件包,然后您应该在命令中添加--no-interaction(或-n)标志以确保它回退到ssh密钥身份验证而不是提示输入密码.这对于持续集成服务器来说也是一个很好的技巧.

现在,问题是2:

  1. BitBucket有部署密钥,但我也可以设置SSH密钥.
  2. 什么Heroku的SSH密钥

那么,我怎样才能让Heroku访问BitBucket上的私有存储库? 如何从composer installHeroku部署的命令下载BitBucket上托管的私有存储库?

Aer*_*dir 5

正确的答案是COMPOSER_AUTH直接在 Heroku 仪表板中设置环境变量。

变量的值应该是这样的:

{
   "http-basic":{
      "bitbucket.org":{
         "username":"hello@aerendir.me",
         "password":"y0UrH4rdT0Gu3sSp4SsW0rd"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

如果设置,Composer 将读取它并使用它的值连接到 BitBucket。

这是正确的方法,因为它是安全的,并且不会强迫您通过您使用(或将使用)构建和部署应用程序的各种服务使密码在网络上传播。

参考:

COMPOSER_AUTH