如何提供对Composer

时间:2015-07-28 20:35:54

标签: git heroku deployment ssh 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"
    }
]

此配置is explained in the Composer Documentation(除了与Heroku :)的“问题”之外,它也可以在没有Satis的情况下工作 - 或者我认为其他云托管。)

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

  

请注意,如果您的私有软件包托管在您的服务器GitHub上   应该有一个ssh密钥,使它可以访问这些包,和   那么你应该在命令中添加--no-interaction(或-n)标志   确保它回退到ssh密钥验证而不是   提示输入密码。这也是连续的好方法   集成服务器。

现在,问题是2:

  1. BitBucket有deployment keys但我也可以set a SSH key
  2. 什么 关于Heroku SSH keys
  3. 那么,我怎样才能让Heroku访问我在BitBucket上的私人存储库? 如何从Heroku部署的composer install命令下载BitBucket上托管的私有存储库?

3 个答案:

答案 0 :(得分:2)

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

变量的值应如下所示:

{
   "http-basic":{
      "bitbucket.org":{
         "username":"hello@aerendir.me",
         "password":"y0UrH4rdT0Gu3sSp4SsW0rd"
      }
   }
}

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

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

参考文献:

COMPOSER_AUTH

答案 1 :(得分:0)

解决/规避了Heroku使用Composer在私有BitBucket存储库中安装依赖项的限制:

变化:

git@bitbucket.org:username/repository.git

在我的composer.json中:

https://bitbucket.org/username/repository.git

运行composer update --no-dev时,Composer会要求您输入用户名/密码进行身份验证。 Next 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,它的工作原理。要么或者让Composer正确使用可以添加到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

答案 2 :(得分:-1)

使https与composer一起使用

  1. 你应该在bitbucket中创建身份验证令牌。
  2. 运行composer config -g github-oauth.github.com token
  3. 将服务器ssh密钥添加到bitbucket

    并改变 https://bitbucket.com/organisation/reponame.git

    git@bitbucket.com:organisation/reponame.git

    希望有所帮助