juststeveking/workflow

此包旨在成为一款简单的PHP工作流包,其工作方式与GitHub Actions相似。

0.0.1 2021-12-02 20:44 UTC

This package is auto-updated.

Last update: 2024-08-29 06:01:51 UTC


README

Tests

此包旨在成为一款简单的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();