drevops/git-artifact

从您的代码库在CI中构建工件并将其推送到单独的Git仓库。

资助包维护!
drevops
Patreon

安装: 16,202

依赖关系: 0

建议者: 0

安全性: 0

星星: 20

关注者: 5

分支: 2

开放问题: 7

类型:

0.7.3 2024-08-07 09:45 UTC

README

Git Artifact logo

将包和文件推送到远程仓库

GitHub Issues GitHub Pull Requests GitHub release (latest by date) codecov Total Downloads LICENSE Renovate

Test PHP CircleCI

这是什么?

一个从您的代码库组装代码工件、删除不必要的文件并将其推送到单独Git仓库的工具。

为什么?

在Acquia等托管环境中,对构建应用程序可用的语言或框架有限制,例如,由于只读文件系统无法运行composer install。因此,网站必须在单独的(源)仓库中开发,将其编译成工件(本地或通过CI),然后传输到托管提供商的版本控制系统(目标仓库)。

此工具可无缝实现这些流程:它使用.gitignore.deployment文件来确定应传输到目标仓库的文件,确保只包括必要的文件,并排除由忽略文件指定的文件。

此外,由于目标仓库需要提交以合并工件(如CSS、JS等)中的更改,因此此工具提供两种提交选项:force-pushbranch,以满足不同的工作流程偏好。

请参阅工件分支中的部署工件示例。

模式

force-push模式(默认)

将打包的工件推送到目标仓库的同一分支,同时保留源仓库的历史记录,并覆盖目标仓库中现有的历史记录。

diagram of force-push mode

用例

将源仓库中所有更改按原样转发到目标仓库的每个分支:例如,源仓库分支feature/123上的提交会在目标仓库分支feature/123上创建提交。源仓库分支feature/123的下一个提交会将更改更新到目标仓库分支feature/123,但会覆盖最后的“部署”提交。

branch模式

在每个部署时将打包的工件推送到新的分支,保留源仓库的历史记录,但需要在每次部署后触发新创建分支的部署。

diagram of branch mode

用例

在源仓库创建的每个标签都在目标仓库中创建一个新的分支:例如,源仓库中的标签1.2.3会在目标仓库中创建分支deployment/1.2.3。新标签的添加会在目标仓库中创建新的唯一分支。

安装

composer require drevops/git-artifact

或从GitHub发布页面下载最新版本。

使用方法

./git-artifact git@github.com:yourorg/your-repo-destination.git

这将从一个当前目录创建一个工件,并将其发送到指定的远程仓库,与当前分支相同。

在CI中运行

查看示例

从CI配置或部署脚本调用

export DEPLOY_BRANCH=<YOUR_CI_PROVIDER_BRANCH_VARIABLE>
./git-artifact git@github.com:yourorg/your-repo-destination.git \
  --branch="${DEPLOY_BRANCH}" \
  --push

请参阅Scaffold项目中的扩展和完全配置的示例

选项

修改工件内容

--gitignore 选项允许指定要替换现有 .gitignore(如果有的话)的工件 .gitignore 文件的路径。任何不再由替换工件的 .gitignore 忽略的文件都会添加到部署提交中。如果没有不再被排除的文件,部署提交仍然会创建,以确保捕获部署时间戳。

令牌支持

令牌是由 [] 包围的预定义字符串,可以包含可选的格式化器(以提高灵活性)。例如,[timestamp:Y-m-d] 被替换为当前时间戳,格式为 Y-m-d(令牌格式化器),这是 PHP date() 预期格式。

--branch--message 选项值都支持令牌替换。

可用令牌

  • [timestamp:FORMAT] - 兼容 PHP date() 的当前时间,格式为 FORMAT
  • [branch] - 源仓库中的当前分支。
  • [tags:DELIMITER] - 由源仓库中最新提交的标签组成,以 DELIMITER 分隔。

维护

代码审查

composer lint
composer lint-fix

运行测试

composer test

使用 https://getscaffold.dev/ 项目脚手架模板创建的存储库