integratedexperts/robo-git-artefact

此包已被弃用且不再维护。作者建议使用 drevops/git-artefact 包。

从您的代码库构建工件并在CI中推送至单独的git仓库。

资助包维护!
drevops
Patreon

安装次数: 83,771

依赖者: 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() 预期的格式。

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

可用令牌

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

维护

代码检查

composer lint
composer lint-fix

运行测试

composer test

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