ac-toulouse/satis2nexus

Satis 的分支,用于自动化推送我们的 composer 包到 Nexus

dev-master 2024-02-03 11:27 UTC

This package is not auto-updated.

Last update: 2024-10-01 12:34:11 UTC


README

Satis2NexusSatis 项目 的分支,用于自动化构建和推送 PHP 私有包到已安装 Nexus 仓库管理器 的实例。

该 Nexus 仓库插件仍然处于测试版,并且只完成了一半,唯一贡献者决定不再更新它。因此,没有简单的方法可以从源仓库自动上传私有 PHP 包到 Nexus,就像 Satis 所做的那样。

该插件唯一的自动化功能是镜像/代理由 packagist.org 托管的公共库。这样做的主要原因是因为该插件只能理解一种类型的 "packages.json" 文件,这是 packagist 的文件(Satis 使用了一个稍微不同的架构)。

因此,我们决定从 Satis 项目中分叉,以包括一个额外的步骤,将生成的 zip 文件推送到 Nexus composer 仓库。

使用方法

安装

在将用于向 Nexus 实例发送包的服务器上,克隆项目仓库

$ git clone git@github.com:ptsakyrellis/satis2nexus.git

更新

在将用于向 Nexus 实例发送包的服务器上,更新仓库: satis2nexus

$ git pull origin master

请在更新之前删除您的包构建目录,以避免任何问题。

配置

配置是通过编辑位于项目根目录的 satis.json 文件来完成的。 satis.json.dist 是一个示例,用于引导您。

satis.json 文件允许您定义您想要在 composer 仓库中提供的项目的不同源代码仓库列表。对于这一步骤,您可以阅读 原始 Satis 文档

我们已删除 "homepage" 属性并添加了以下元素

{
 "nexus": "http://nexus3.yourdomain.com",
 "nexus-repository": "composer-repository-name",
 "nexus-user": "user_nexus_login",
 "nexus-password": "user_nexus_password"
}

将为 Git 仓库中找到的每个标签创建一个发布版本。

命令

这是一个 symfony 控制台应用程序,由两个任务组成,buildpurge

使用应用程序的最佳方法是使用 cronjob,它将定期构建和清除 Nexus 仓库,以便紧密镜像源仓库中发布或删除的内容。

先决条件

该应用程序将使用底层的 git 命令执行操作,因此您应该在您的服务器上安装 git 二进制文件,并且执行应用程序的用户应该有权访问您将推送到的 Nexus 仓库。您可以阅读 原始 Nexus 文档 了解更多相关信息。

构建命令

将新包发送到 Nexus(或替换已修改的包)。

用法语法
$ php bin/satis build --no-interaction \<configuration file> \<build dir>
  • 参数
    • 配置文件satis.json 配置文件
    • 构建目录:将创建 packages.json 文件和 zip 存档的目录
将要执行的操作
  • 克隆每个声明的源代码仓库以为每个版本标签创建一个 zip 存档
  • 每个存档都有一个唯一的名称
  • 之前创建的存档不会再次创建(基于存档名称)
  • 不在 Nexus 仓库中的存档将被发送
  • 如果标签被修改,将创建新的存档并将其推送到 Nexus 仓库以替换旧的存档
  • 将生成一个 packages.json 文件,并由 purge 命令使用

清除命令

删除 Nexus 仓库中不再存在于源代码仓库中的包。

用法语法
$ php bin/satis purge <configuration file> <build dir>
  • 参数
    • 配置文件 : satis.json 配置文件
    • 构建目录:将创建 packages.json 文件和 zip 存档的目录
将要执行的操作
  • 警告:清除命令仅基于 packages.json 文件的内容,因此您只能在运行构建命令之后运行此命令。
  • 在 Nexus 仓库中找到但不再在 git 仓库(作为标签)中的存档将被删除

许可证

Satis2Nexus 在 MIT 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件