为了管理我的库我使用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"
}
]
这个配置is explained in the Composer Documentation(它也没有Satis,除了与Heroku的“问题”:) - 或我认为的其他云托管)。
在那里,关于身份验证,解释:
请注意,如果您的私有软件包托管在GitHub上,您的服务器应该有一个ssh密钥,使其可以访问这些软件包,然后您应该在命令中添加--no-interaction(或-n)标志以确保它回退到ssh密钥身份验证而不是提示输入密码。这对于持续集成服务器来说也是一个很好的技巧。
现在,问题是2:
那么,我怎样才能让Heroku访问BitBucket上的私有存储库?如何从Heroku在部署时执行的composer install
命令下载BitBucket上托管的私有存储库?
正确的答案是使用COMPOSER_AUTH
作为直接在Heroku仪表板中设置的环境变量。
变量的值应该是这样的:
{
"http-basic":{
"bitbucket.org":{
"username":"[email protected]",
"password":"y0UrH4rdT0Gu3sSp4SsW0rd"
}
}
}
如果设置,Composer将读取它并使用其值连接到BitBucket。
这是正确的方法,因为它是安全的,并且不会强迫您通过您使用(或将使用)构建和部署应用程序的各种服务在Web中进行密码。
参考文献:
解决/规避了Heroku使用Composer在私有BitBucket存储库中安装依赖项的限制:
变化:
[email protected]: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
文件中包含一个部分,Hero使用该部分来安装依赖项。
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "key-goes-here",
"consumer-secret": "secret-goes-here"
}
}
另见
使https与作曲家合作
composer config -g github-oauth.github.com token
要么
将服务器ssh密钥添加到bitbucket
并改变https://bitbucket.com/organisation/reponame.git
至
[email protected]:organisation/reponame.git
希望能帮助到你