php - 在 GitHub 上使用 Composer 和 Private Repository 在 Build Server 上使用 VCS

标签 php git github ssh composer-php

我的 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/

相关文章:

php - 如何在 Laravel Controller 中获取 Car_type、Marks 和 model?

git - 如何避免在克隆时提供 git repo 的绝对路径?

ruby-on-rails - 在推送到 Heroku 之前删除 Rails 中的预编译 Assets

git - 如何在三重存储之上设置版本控制

.net - 常见的 .NET 类(即 List<T>)-TypeScript 中的实现

github - 如何显示当前运行分支的 GitHub 操作徽章?

php - 分析仪表板策略

php - 将 include 与 localhost 一起使用时出现 mysql_num_rows() 错误

php - 使用 php 在 mysqldb 中搜索

c# - GIT 智能 HTTP 协议(protocol)的服务端和客户端有哪些细节区别