我如何使用 Artifactory 作为来自 packagist 的 PHP composer 依赖项的缓存代理?

How can I use Artifactory as a caching proxy for my PHP composer dependencies from packagist?

我想使用 Artifactory 作为我的 PHP composer 依赖项的缓存代理。

我已经能够手动创建远程存储库并将 composer 配置为使用 Artifactory 而不是 packagist。

问题是我的项目有很多依赖(因为依赖有依赖)

如果我必须手动执行此操作,将无法使用 Artifactory。

如何创建从 composer.json 开始的所有依赖项(包括间接依赖项)的镜像?

Artifactory 中的远程存储库通常用于镜像另一个存储库/注册表,为多个包提供服务。不需要为每个依赖项(即包)设置一个新的远程存储库。

由于 packagist.org are served from github.com 中的大多数软件包,配置一个远程存储库来解析来自 packagist 的注册表索引文件和来自 github 的二进制文件应该足够了。

如果您依赖未托管在 github 中的包,您可以简单地添加一个额外的远程存储库来镜像其他 git 提供程序。在这种情况下,您还应该定义一个 virtual repository 来聚合所有相关的存储库,并使用该存储库来解决您的依赖关系。

有关详细信息 - 请参阅 PHP Composer Remote Repositories 的文档。

JFrog CLI 可以帮助设置自动化以管理您的 Artifactory 存储库。您可以创建、更新和删除本地、远程和虚拟 Artifactory 存储库。 这是您需要做的:

1.安装 JFrog CLI

https://jfrog.com/getcli/

安装 JFrog CLI

2。配置您的 JFrog 实例

通过运行以下命令配置 JFrog 实例的连接详细信息:

jfrog c add my-instance

3。创建存储库模板

运行以下命令:

jfrog rt rpt repo-conf-template.yml

此命令将在当前目录中创建一个名为 repo-conf-template.yml 的模板文件,其中包含您的存储库配置。 这是一个交互式命令,它会提示您一系列问题。您可以选择使用变量作为问题的值。例如,当提示提供存储库密钥时,您可以提供 ${my-repo-key} 作为值。这允许在使用模板时将变量 my-repo-key 替换为任何存储库键值。这样,您可以使用完全相同的配置来创建一个新的存储库,并且每次只设置一个新的存储库密钥。

4.创建、更新或删除存储库

现在您已准备好模板,您可以使用它来创建和更新存储库,作为自动化脚本的一部分。假设您想使用您创建的 repo-conf-template.yml 模板创建存储库,其中包括 ${my-repo- key} 存储库密钥的变量。然后,您应该使用 jfrog rt rc 命令,如下所示。

jfrog rt rc repo-conf-template.yml --vars "my-repo-key=my-actual-repo-name"

请注意,您可以为多个变量设置值,方法是对 --vars 使用以下格式:

--vars "key1=value1;key2=value2;..."

您可以类似地使用 jfrog rt ru 来使用模板更新存储库。 要删除此存储库,运行 jfrog rt rdel 如下。

jfrog rt rdel my-actual-repo-name

阅读有关使用 JFrog CLI 管理存储库的更多信息here