【问题标题】:Composer custom GitLab server dependenciesComposer 自定义 GitLab 服务器依赖项
【发布时间】:2020-09-08 01:29:58
【问题描述】:

我们在 VPN 后面有一个公司 GitLab 服务器。那里的包被设置为公开的,但它们实际上是“私有的”,因为未经我们的 VPN 授权,您无法访问存储库。

我创建了一个依赖于其他存储库的存储库(在同一台服务器上)。

回购 1:

"name": "xxx/repo1",
"repositories": [
    {
        "type": "vcs",
        "url": "http://pvt/repo2"
    }
],
"require": {
    "xxx/repo2": "dev-master"
},

回购 2:

"name": "xxx/repo2"

我遇到的问题是当我尝试在我的其他服务之一中使用 repo1 时。

"name": "other/service",
"repositories": [
    {
        "type": "vcs",
        "url": "http://pvt/repo1"
    }
],
"require": {
    "xxx/repo1": "dev-master"
},
"minimum-stability": "dev",
"prefer-stable": true,

像这样执行composer install 只会告诉我找不到repo2。我可以这样解决:

"name": "other/service",
"repositories": [
    {
        "type": "vcs",
        "url": "http://pvt/repo1"
    },
    {
        "type": "vcs",
        "url": "http://pvt/repo2"
    }
],
"require": {
    "xxx/repo1": "dev-master"
},

但这远非理想。如果我有 10 个服务并且都需要 repo1 来运行,那么在 repo1 中引入一个新的依赖项将需要我更改 10 个 composer.json 文件。

为什么这个功能与其他依赖项的功能不同,以便自动拉取请求包的所有必需依赖项?

我尝试将此添加到配置中:

"config": {
    "gitlab-domains": [
        "pvt"
    ],
    "gitlab-token": {
        "pvt" : "---my-token---"
    }
},

但这基本上没有任何作用。

我也尝试用确切的服务器 IP 替换 pvt,但没有任何改变。

有没有办法让这个工作?

注意:我不想使用任何外部服务,例如 Private Packagist 或 Satis。

【问题讨论】:

  • 这能回答你的问题吗? Load two custom libraries
  • 正如我所说,我已经有了这个解决方案。但是这样不适合我,因为我需要更新多个 json 文件,以防我向repo1 添加新的依赖项
  • 这就是 Composer 的工作方式。如果您想使用私有存储库,您可能需要查看getcomposer.org/doc/articles/…,但您仍然需要在每个包中添加私有存储库,因为存储库不是从依赖项继承的。

标签: php package gitlab composer-php repository


【解决方案1】:

有没有办法让它工作?

答案是“否”——见官方 Composer 的解释:https://getcomposer.org/doc/faqs/why-can%27t-composer-load-repositories-recursively.md

【讨论】:

    【解决方案2】:

    GitLab 13.2 (July 2020) 提供替代方案

    使用 GitLab Composer 存储库管理 PHP 依赖项

    PHP 开发人员需要一种机制来共享和使用其项目的依赖项。 Composer 是一个 PHP 的依赖管理器,它允许你声明你的项目所依赖的库,它会为你管理它们。

    我们很自豪能够提供直接内置于 GitLab 中的 Composer 存储库。

    PHP 开发人员现在可以更轻松地发现和管理项目的依赖项。通过与 Composer 集成,GitLab 提供了一个集中位置,可以在与源代码和管道相同的位置查看这些包。 Package Registry 中的 PHP 依赖项将列在 All 选项卡下,而不是 Composer 特定选项卡下。我们将通过在即将到来的里程碑中添加特定于 Composer 的选项卡来迭代以改进这一点。

    DocumentationIssue

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 2015-01-24
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多