如何提供对 Composer 使用的 git 存储库的访问
How to provide access to a git repository that is used by 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://Aerendir@bitbucket.org/Aerendir/private-package"
}
]
此配置 is explained in the Composer Documentation(它在没有 Satis 的情况下也可以工作,除了 "problem" 与 Heroku :) - 或我认为的其他云托管)。
那里,关于认证,有说明:
Note that if your private packages are hosted on GitHub, your server
should have an ssh key that gives it access to those packages, and
then you should add the --no-interaction (or -n) flag to the command
to make sure it falls back to ssh key authentication instead of
prompting for a password. This is also a good trick for continuous
integration servers.
现在,问题是 2:
- BitBucket 有 deployment keys but I can also set a SSH key.
- 什么
关于 Heroku SSH keys?
那么,我怎样才能让 Heroku 访问我在 BitBucket 上的私有存储库?
如何从 Heroku 在部署时执行的 composer install
命令下载托管在 BitBucket 上的私有存储库?
使 https 与 composer 一起工作
- 您应该在 bitbucket 中创建身份验证令牌。
- 运行
composer config -g github-oauth.github.com token
或
将服务器 ssh 密钥添加到 bitbucket
并改变
https://bitbucket.com/organisation/reponame.git
至
git@bitbucket.com:organisation/reponame.git
希望对您有所帮助
Resolved/circumvented 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 时,可以检查应用程序的详细信息,其中包括一个 public 密钥。将它添加到 BitBucket 中,它就可以工作了。或者让 Composer 正确使用可以添加到 Heroku 的 public 键...
更新:直接在 composer.json
另一种选择是(简单地)在 composer.json
文件中包含 Heroku 用来安装依赖项的部分。
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "key-goes-here",
"consumer-secret": "secret-goes-here"
}
}
另见
正确答案是使用 COMPOSER_AUTH
作为直接在 Heroku 仪表板中设置的环境变量。
变量的值应该是这样的:
{
"http-basic":{
"bitbucket.org":{
"username":"hello@aerendir.me",
"password":"y0UrH4rdT0Gu3sSp4SsW0rd"
}
}
}
如果设置,Composer 将读取它并使用它的值连接到 BitBucket。
这是正确的方法,因为它是安全的,不会强迫您通过您使用(或将使用)构建和部署应用程序的各种服务在网络上传播您的密码。
参考文献:
为了管理我的库,我使用 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(它在没有 Satis 的情况下也可以工作,除了 "problem" 与 Heroku :) - 或我认为的其他云托管)。
那里,关于认证,有说明:
Note that if your private packages are hosted on GitHub, your server should have an ssh key that gives it access to those packages, and then you should add the --no-interaction (or -n) flag to the command to make sure it falls back to ssh key authentication instead of prompting for a password. This is also a good trick for continuous integration servers.
现在,问题是 2:
- BitBucket 有 deployment keys but I can also set a SSH key.
- 什么 关于 Heroku SSH keys?
那么,我怎样才能让 Heroku 访问我在 BitBucket 上的私有存储库?
如何从 Heroku 在部署时执行的 composer install
命令下载托管在 BitBucket 上的私有存储库?
使 https 与 composer 一起工作
- 您应该在 bitbucket 中创建身份验证令牌。
- 运行
composer config -g github-oauth.github.com token
或
将服务器 ssh 密钥添加到 bitbucket
并改变
https://bitbucket.com/organisation/reponame.git
至
git@bitbucket.com:organisation/reponame.git
希望对您有所帮助
Resolved/circumvented 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 时,可以检查应用程序的详细信息,其中包括一个 public 密钥。将它添加到 BitBucket 中,它就可以工作了。或者让 Composer 正确使用可以添加到 Heroku 的 public 键...
更新:直接在 composer.json
另一种选择是(简单地)在 composer.json
文件中包含 Heroku 用来安装依赖项的部分。
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "key-goes-here",
"consumer-secret": "secret-goes-here"
}
}
另见
正确答案是使用 COMPOSER_AUTH
作为直接在 Heroku 仪表板中设置的环境变量。
变量的值应该是这样的:
{
"http-basic":{
"bitbucket.org":{
"username":"hello@aerendir.me",
"password":"y0UrH4rdT0Gu3sSp4SsW0rd"
}
}
}
如果设置,Composer 将读取它并使用它的值连接到 BitBucket。
这是正确的方法,因为它是安全的,不会强迫您通过您使用(或将使用)构建和部署应用程序的各种服务在网络上传播您的密码。
参考文献: