tzurbaev / laravel-pipeline-tasks
基于 illuminate/pipeline 的 Pipeline 任务
Requires
- php: >=7.1
- illuminate/container: 5.5.*
- illuminate/pipeline: 5.5.*
Requires (Dev)
- mockery/mockery: ^0.9.9
- phpunit/phpunit: ^6.1
This package is auto-updated.
Last update: 2024-09-07 07:42:28 UTC
README
此包允许您创建一些带有步骤(管道)列表的任务,并能够逐个执行这些步骤,同时能够在任何步骤上中断任务执行。
要求
此包需要 PHP 7.1 或更高版本。
安装
您可以通过 composer 安装此包
$ composer require tzurbaev/laravel-pipeline-tasks
文档
示例
示例任务和管道在 examples
目录中定义。一旦定义了您的任务,您可以通过 TasksManager 类启动您的任务
<?php use App\CloneGitRepositoryTask; use Zurbaev\PipelineTasks\TaskManager; use Illuminate\Container\Container; $manager = new TaskManager(Container::getInstance()); $task = new CloneGitRepositoryTask( 'git@github.com:tzurbaev/laravel-pipeline-tasks.git', 'master', '/var/git/pipeline-tasks' ); $manager->start($task);
或者您可以使用 PipelineTasks
门面
<?php use App\CloneGitRepositoryTask; use Zurbaev\PipelineTasks\Facades\PipelineTasks; $task = new CloneGitRepositoryTask( 'git@github.com:tzurbaev/laravel-pipeline-tasks.git', 'master', '/var/git/pipeline-tasks' ); PipelineTasks::start($task);
所有管道将按照它们在 pipes
方法中定义的顺序执行。
停止执行
如果您需要停止进一步的任务管道执行,只需从您的 handle
方法返回 false
即可。
请注意,对于 false
值存在严格的类型检查。这意味着如果您返回空字符串、0
、null
或任何其他假值,则不会停止任务执行。
跳过管道
如果您需要跳过某些管道,只需在 handle
方法的开头(或任何合理的位置)返回任何非假值。
您还可以返回可以在任务的 completed
或 failed
方法中稍后检查的值。
访问管道结果
Task
类提供辅助方法来检索任何管道的结果
hasPipeResult(string $name)
- 确定任务是否为给定的管道名称提供结果;getPipeResult(string $name, $default = null)
- 返回管道值或默认值(如果为空);results()
- 返回所有管道结果的数组。
更改管道名称
如果您有多个相同的管道类,您可能希望覆盖其名称,因为在任务结束时,您将得到最新类似管道的结果。
您可以在您的管道类中覆盖 public function name()
<?php namespace App\Pipes; use App\CloneGitRepositoryTask; use Zurbaev\PipelineTasks\Pipe; class CloneGitRepository extends Pipe { /** * @var CloneGitRepositoryTask */ protected $task; public function name() { return 'clone-git-branch-'.$this->task->getBranch(); } public function handle() { // Handle pipe. } }
现在结果将存储为 clone-git-branch-master
而不是 CloneGitRepository
。
事件
TaskManager
触发两个事件:在任务成功执行时触发 Zurbaev\PipelineTasks\Events\PipelineTaskCompleted
,在失败时触发 Zurbaev\PipelineTasks\Events\PipelineTaskFailed
。
PipelineTaskCompleted
实例包含 public $task
属性,因此您可以在您的监听器中访问它。除了 public $task
属性外,PipelineTaskFailed
还提供了 public $exception
,用于识别导致失败的确切管道。
异常
如果在任务执行过程中发生错误,您可以通过任务类上的 failed
方法或通过监听 PipelineTaskFailed
事件来检测它。
failed
方法接受 Zurbaev\PipelineTasks\Exceptions\PipelineTaskFailedException
实例作为第一个参数,因此您可以检查它。
您可以使用 $e->getPipeName()
方法获取失败管道的名称。
如果在运行管道时发生异常,您可以通过 $e->getPrevious()
方法访问它。
异常代码作为 PipelineTaskFailedException
类的常量描述
PipelineTaskFailedException::EXCEPTION_THROWN
- 表示在运行管道时抛出了异常。您可以通过$e->getPrevious()
方法访问此异常;PipelineTaskFailedException::REJECTED
- 表示管道返回false
,因此任务被标记为失败。
变更日志
有关最近更改的详细信息,请参阅 CHANGELOG。
测试
$ vendor/bin/phpunit
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全
如果您发现任何安全相关的问题,请发送电子邮件至 zurbaev@gmail.com 而不是使用问题跟踪器。
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。