更新JFrog Artifactory中PHP Composer v2的存储库

如果你是近四分之一的使用PHP的专业开发人员之一(根据StackOverflow的2021年调查),那么Composer的维护者真的希望你从PHP包管理器的v1迁移到v2。
2020年10月24日,Composer 2.0.0发布有一些重大改进。由于互联网上几乎每10个网站中就有8个在某种程度上使用PHP,这是一个影响很大的变化。
更新了Artifactory 7.24帮助您管理此迁移,支持这两个V1和v2标准PHP库.
PHP Composer V2
新版本的Composer是一个重大的改进,据报道,它在解决PHP依赖项的速度和内存使用方面都提高了50%。其中包括新的v2存储库元数据格式,以及通过API按供应商或类型列出包的能力。
为了鼓励迁移到v2, 2021年5月,packagist,初级PHP的作曲家注册中心和维护者开始弃用Composer 1。X与下列制裁:
- 降低v1元数据API更新速率
新版本的更新速率从每分钟降低到每15分钟一次。这意味着新的发行版需要多花几分钟才能安装Composer 1.x。
- 通过v1元数据API限制对未使用包的访问
v1格式使用非常长的文件列表,维护数百万个包会影响进程的性能。为了解决这个问题,packagist将从v1索引中隐藏(在滚动的基础上)过去4个月没有下载的所有包。
PHP Composer V2和V1在Artifactory
与大多数PHP开发人员一样,您的团队几乎肯定已经构建了一个大量的专有Composer包库,以及在公共存储库(如packagist)中使用的开源依赖项。
这就是为什么Artifactory允许您在本地和远程存储库中同时支持v1和v2标准,以帮助您按照自己的节奏管理Composer v2迁移。
首先,所有PHP Composer存储库在Artifactory 7.24和更新版本中支持这些v2特性:
- Composer v2元数据API(本地和远程回购)
- 作曲者列表API(本地和远程回购)
- Drupal 7和Drupal 8注册中心支持远程存储库
这有助于确保Artifactory中的远程存储库将继续与packagist一起工作,因为他们继续鼓励逐步淘汰v1。
配置Artifactory Composer Repo
如果需要的话,任何本地Artifactory repo也可以支持Composer v1操作,维护v1和v2的索引。
一旦您将Artifactory实例更新到7.24或更新版本,您现有的所有本地Composer存储库都将支持这两个默认为V1和v2版本。这有助于确保您的团队在向v2迁移时可以继续使用Composer v1。
但是,您创建的任何新的本地Composer存储库都将支持只有默认为V2。
启用/禁用Composer v1
我们在PHP repo配置中添加了一个选项来启用/禁用Composer v1索引。

因此,如果默认配置不是您的首选项,您可以更改它们。当您的团队完全迁移到v2时,您还可以在存储库中取消对v1的支持。
v1索引可以在回购配置中随时启用/禁用。但是,您还必须执行存储库的重新索引才能使此更改生效。控件中的存储库可以通过右键单击来调用工件树和选择重新计算指数.

Composer存储库结构
当您的repo启用了Composer v1索引(并且已经计算了它的索引),Artifactory将维护两个索引集,用于v1 (p)和v2 (p2).通过这种方式,Composer v1和v2操作都受到支持。

您可以在' config '中将本地存储库设置为Composer命令行的默认存储库。. json文件中显示的URL给我介绍:
{" repositories ": [{"type": "composer", "url": "https://localhost:8081/artifactory/api/composer/php-local"} {" packagist ": false}]}
您可以使用Artifactory api获取检索元数据和列表包名称所需的url。
得到artifactory / api /作曲家/ php-local / packages.json
例如,上面的命令可能产生以下响应:
{“搜索”:“https://localhost:8081/artifactory/api/composer/php-local/search.json?”Q =%query%&type=%type%", " providers-lazy-url ": "https://localhost:8081/artifactory/api/composer/php-local/p/%package%。Json ", " metadata-url: "https://localhost:8081/artifactory/api/composer/php-local/p2/%package。Json ", " list ": "https://localhost:8081/artifactory/api/composer/php-local/packages/list。json "}
使用' metadata-url ',你可以检索一个包的v2元数据:
得到artifactory / api /作曲家/ php-local / p2 /独白/ monolog.json
保持PHP Composer的最新状态
这些PHP Composer的重要更新只是我们不断努力的最新内容,以帮助您的包管理服务保持在Artifactory的最新状态。通过这些改进,您可以按照自己的节奏使PHP Composer包符合v2,同时立即保持依赖包打包器的远程存储库的可操作性和性能。
即将发布的版本还将允许您创建PHP Composer虚拟存储库,将您的本地、远程和其他虚拟Composer v2存储库组合成一个由单个逻辑URL访问的集合。
这些都是将Artifactory安装更新到最新版本的有力理由。如果你没有给出JFrog DevOps平台试一试,免费开始!
