juststeveking / workflow
此包旨在成为一款简单的PHP工作流包,其工作方式与GitHub Actions相似。
0.0.1
2021-12-02 20:44 UTC
Requires
- php: ^8.0
- ramsey/uuid: ^4.2
- symfony/yaml: ^6.0
- tightenco/collect: ^8.68
Requires (Dev)
- pestphp/pest: ^1.21
- phpstan/phpstan: ^1.2
- spatie/ray: ^1.32
README
此包旨在成为一款简单的PHP工作流包,其工作方式与GitHub Actions相似。
安装
要安装此包,请使用以下composer命令
composer require juststeveking/workflow
用法
要创建一个新的工作流运行器,您只需构建它。它可以接收一个可选的工作流数组供您传递,或者您可以允许它默认为空以编程方式自行构建。
在没有工作流的情况下构建工作流运行器
use JustSteveKing\Workflow\WorkflowRunner; $runner = WorkflowRunner::build();
带有工作流的工作流运行器构建
use JustSteveKing\Workflow\WorkflowRunner; $runner = WorkflowRunner::build( workflows: [ WorkflowBuilder::make( payload: JsonLoader::load(__DIR__ . '/path/to/workflow.json') ) ] );
构建工作流
要构建工作流,您可以使用YAML文件或JSON文件
示例YAML工作流文件
name: 'test' jobs: test: run: target: JustSteveKing\Workflow\Stubs\Test method: run args: - 'test' - 10 - true another: run: target: JustSteveKing\Workflow\Stubs\Test method: another args: - 'test'
示例JSON工作流文件
{ "name": "test", "jobs": { "test": { "run": { "target": "JustSteveKing\\Workflow\\Stubs\\Test", "method": "run", "args": [ "test", 10, true ] } }, "another": { "run": { "target": "JustSteveKing\\Workflow\\Stubs\\Test", "method": "another", "args": [ "test" ] } } } }
您可以使用以下方法将这些文件传递给WorkflowBuilder
JSON工作流
use JustSteveKing\Workflow\WorkflowBuilder; use JustSteveKing\Workflow\Loaders\JsonLoader; $workflow = WorkflowBuilder::make( payload: JsonLoader::load(__DIR__ . '/path/to/workflow.json') );
YAML工作流
use JustSteveKing\Workflow\WorkflowBuilder; use JustSteveKing\Workflow\Loaders\YamlLoader; $workflow = WorkflowBuilder::make( payload: YamlLoader::load(__DIR__ . '/path/to/workflow.yaml') );
运行工作流
一旦构建了工作流运行器,您只需运行它即可
use JustSteveKing\Workflow\WorkflowRunner; $runner = WorkflowRunner::build( workflows: [ WorkflowBuilder::make( payload: JsonLoader::load(__DIR__ . '/path/to/workflow.json') ) ] ); $runner->run();
对于每个工作流中的每个作业,任何返回的内容都将被添加到运行器内部日志中,以便您可以检查它们是否已运行。这可以通过以下方式访问
$runner->logs();