在单个composer.json中使用多个GitHub/GitLab令牌,无需重复令牌

问题描述 投票:0回答:1

如果我想引用私有存储库中的包,我需要 GitHub/GitLab 访问令牌。 composer.json 的特殊性在于它只能处理单个 OAuth 访问。因此,如果我使用多个令牌,我必须在每个composer.json文件的存储库部分中列出“git”类型“url”值,并将令牌嵌入每个URL中。

之前,我问过一个关于如何将令牌存储在单独文件中的问题,请参阅此处:

Composer 不提供使用外部“变量”的选项,如yivi所述。

Composer 团队不打算在全球范围内支持多个访问令牌。

如何设法使用可以为 Composer 全局设置的多个令牌(或使用多个令牌的替代方法)?

composer-php
1个回答
0
投票

由于 GitHub 不允许使用一个令牌拉取多个帐户的存储库,并且 Composer 只能处理每个域一个令牌,因此我们需要找到一种解决方案,可以在单个令牌下管理所有私有存储库。

通过使用外部服务,我们可以创建一组可以使用不同令牌访问的存储库。为此,我们可以为外部服务创建一个访问令牌,该令牌可以为 Composer 进行全局设置。通过自托管解决方案,您可以在本地免费组装,但也可以使用在线服务。

自托管镜像存储库

有多种选择,对我来说,Gitea 解决方案效果最好。您可以在自己的计算机或服务器上运行它,将令牌分配给镜像存储库,并安排镜像以指定的时间间隔进行,以使存储库保持最新。这样,您就可以将多个 GitHub/GitLab 令牌可访问的存储库镜像到单个通用令牌下,然后您只需在 Composer 中配置此单个共享登录令牌即可。

使用自托管的 Git 服务。例如,使用 Gitea,您可以收集 使用多个 GitHub 令牌进行存储库镜像(您稍后可以 保持最新,类似于 GitHub forks)。

使用 Gitea,您可以使用其 API 发布包,也可以 还配置 HTTP 访问。

  • Gitea 文档

引自之前的答案我写过但被删除了

私人 Packagist 的替代解决方案

Seldaek 的评论:composer/composer #10483 - GitHub

TBH 这是一个特殊的用例,因为存储库构建很差,我不太热衷于在作曲家中支持它。 Private Packagist 确实支持这一点,因为您可以多次添加相同的存储库作为第三方镜像,为每个存储库配置不同的凭据集,并镜像每个存储库的不同软件包集。因此,我建议您尝试使用它,或者尝试让您的供应商将其用作付费软件包存储库,这也是我们提供的东西,然后我们会为客户正确处理凭据。

重复#8724顺便说一句,如果您想了解更多相关信息。

(强调)

© www.soinside.com 2019 - 2024. All rights reserved.