我的 compsoser.json 使用我们组织 Github 帐户中的 2 个私有(private)存储库,如下所示。
{
"name": "API",
"repositories": [
{
"type": "vcs",
"url": "git@github.com/company/private.git"
},
{
"type": "vcs",
"url": "git@github.com/company/private2.git"
}
],
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": ">2.1.3",
"doctrine/mongodb-odm": "dev-master",
"doctrine/doctrine-mongo-odm-module": "dev-master",
"company/private": "dev-master",
"company/private2": "dev-master"
}
}
我们已经设置了 SSH key 并将它们添加到我们的暂存服务器上的授权 key 中。当我们运行 git clone 时,它运行完美并且不要求任何凭据。
但是,当我们运行 composer update 时,获取存储库失败,因为 composer 没有访问存储库的权限。
由于这是以非交互方式运行的,因为这是构建脚本的一部分,我们无法输入凭据并希望将其自动化。
我们可以做些什么来让 composer 在构建期间访问我们的私有(private)仓库?
最佳答案
我理解问题标题特别提到使用类型“vcs”,但这是一个 alternate method使用私有(private) git repos 将项目作为包部署。
"repositories": [
{
"type": "package",
"package": {
"name": "company/private",
"version": "0.1.0",
"type": "package",
"source": {
"url": "git@github.com:/company/private.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"company/private": "*"
}
限制是如果你想要最新的版本,你必须在每次部署时手动更改版本号。不过,这也是它的优点。
以这种方式定义一个 repo 将允许您提取一个特定的标记版本。在这种情况下,带有标记 0.1.0
的提交将在 composer update
上被 pull 。
您需要在您的 github 帐户中添加要部署到的服务器的 SSH key 。
关于php - 在 GitHub 上使用 Composer 和 Private Repository 在 Build Server 上使用 VCS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25400378/