要管理我的库我使用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:
那么,我怎样才能让Heroku访问我在BitBucket上的私人存储库?
如何从Heroku部署的composer install
命令下载BitBucket上托管的私有存储库?
答案 0 :(得分:2)
正确的答案是使用COMPOSER_AUTH
作为直接在Heroku仪表板中设置的环境变量。
变量的值应如下所示:
{
"http-basic":{
"bitbucket.org":{
"username":"hello@aerendir.me",
"password":"y0UrH4rdT0Gu3sSp4SsW0rd"
}
}
}
如果已设置,Composer将读取它并使用其值连接到BitBucket。
这是正确的方法,因为它是安全的,不会强迫您通过使用(或将要使用)的各种服务来构建和部署应用程序,从而使密码在网络上四处传播。
参考文献:
答案 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
文件中包含一个由Heroku用来安装依赖项的部分。
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "key-goes-here",
"consumer-secret": "secret-goes-here"
}
}
另见
答案 2 :(得分:-1)
使https与composer一起使用
composer config -g github-oauth.github.com token
或
将服务器ssh密钥添加到bitbucket
并改变
https://bitbucket.com/organisation/reponame.git
到
git@bitbucket.com:organisation/reponame.git
希望有所帮助