in2code/deploymentlocker

一个简单的脚本,用于禁止并行执行相同的TYPO3.Surf部署

1.1.0 2018-08-23 12:40 UTC

This package is auto-updated.

Last update: 2024-08-25 06:20:44 UTC


README

描述

TYPO3.Surf是一个用于自动化部署的命令行应用程序。当部署运行时,许多任务按顺序执行。如果部署在两个独立的进程中并行运行,可能会导致部署目标处于不可用且难以恢复的状态。

为了防止同一时间执行两次或更多次的部署,您可以简单地锁定它。

这不会影响任何其他部署。您仍然可以并行运行另一个部署!

安装

通过composer安装In2code.DeploymentLocker

composer require in2code/deploymentlocker

如何使用

打开您想要保护的部署,并在php开头标签之后添加以下行。它应该看起来像这样:(注意注释是可选的)

<?php
/** @var \TYPO3\Surf\Domain\Model\Deployment $deployment */
\In2code\DeploymentLocker\DeploymentLocker::lockDeployment($deployment);

就这样。重复其他任何您想要保护的部署。

发生了什么?

DeploymentLocker将自己写入$GLOBAL,因此该对象将存在于整个运行时。(可能静态属性更等效或更好?)当对象被创建时,它会检查当前部署是否存在锁文件。如果是,则抛出异常并立即停止部署。否则,将创建锁文件。运行时结束后,锁文件将被删除,部署可以再次启动。

您可以在部署中捕获异常并输出其他信息或实现“等待X秒后重试”等功能,但我不建议这样做。

测试与贡献

请随意发起讨论,创建分支或创建拉取请求。

此包是“生产测试”的;坦白地说,这是我几年前写的一个包的摘录。那个包仍然用于 Surf < 2.0,并需要In2code.SurfGui。

版权

所有版权归in2code GmbH所有 info@in2code.de。本包的作者是Oliver Eglseder oliver.eglseder@in2code.de。本包根据GNU通用公共许可证,版本3或更高版本授权(https://gnu.ac.cn/licenses/gpl.html)。