dantleech / maestro
Maestro 第二版
dev-master / 1.0.x-dev
2021-01-07 08:30 UTC
Requires
- php: ^8.0
- amphp/amp: ^2.5
- amphp/http-client: ^4.5
- amphp/process: ^1.1
- clue/arguments: ^2.1
- composer/semver: ^3.2
- dantleech/invoke: ^1.2
- league/commonmark: ^1.5
- phpactor/config-loader: ^0.1.1
- phpactor/container: ^1.3.4
- psr/log: 1.1.x-dev
- symfony/console: ^5.1
- symfony/error-handler: ^5.2
- symfony/filesystem: ^5.2
- symfony/process: ^5.2
- symfony/yaml: ^5.2
- twig/twig: ^3.1
- webmozart/path-util: ^2.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.17
- phpactor/test-utils: ^1.0
- phpstan/phpdoc-parser: ^0.4.10
- phpunit/phpunit: ^9.4
- symfony/finder: ^5.2
- vimeo/psalm: ^4.2
This package is auto-updated.
Last update: 2024-09-07 16:53:28 UTC
README
Maestro2 是一个 PHP 仓库管理系统的。
想象一下它是用于仓库的 Ansible。
- 对多个包执行升级。
- 标准化跨仓库的配置。
- 运行 CI
- 进行调查(发现最新标签、CI 状态等)
此项目是一个正在进行中的项目。
工作原理
Maestro 实质上是一个方便与仓库一起工作的并发任务运行器。
您的任务是创建一个 pipeline 类。这个类将被实例化,并通过 configuration node 传递,它必须返回一个 task。这个 task 可以是许多任务的聚合。
配置
maestro.json
这是主要的配置文件,可能看起来像这样
{
"core.inventory": [
"example/inventory.json",
"example/secrets.json"
],
"core.templatePath": "example/templates",
"core.workspacePath": "var",
"core.concurrency": 10
}
库存文件是我们定义仓库和变量的地方
{
"vars": {
"jobs": [
"php-cs-fixer",
"phpstan",
"phpunit"
],
"defaultBranch": "master"
},
"repositories": [
{
"name": "maestro",
"url": "git@github.com:dantleech/maestro2",
"vars": {
"jobs": [
"psalm",
"phpunit"
]
}
},
{
"name": "worse-reflection",
"url": "git@github.com:phpactor/worse-reflection"
}
]
}
库存文件将被合并并转换成配置节点,这些节点可以由流水线使用。
流水线
创建一个流水线并确保它可以自动加载,例如
<?php // example/EmptyPipeline.php namespace Maestro\Examples\Pipeline; use Maestro\Core\Inventory\MainNode; use Maestro\Core\Pipeline\Pipeline; use Maestro\Core\Task\NullTask; use Maestro\Core\Task\SequentialTask; use Maestro\Core\Task\Task; class EmptyPipeline implements Pipeline { public function build(MainNode $mainNode): Task { return new SequentialTask([ new NullTask(), ]); } }
然后您可以运行它
$ ./vendor/bin/maestro run pipeline/EmptyPipeline.php
这几乎什么都没做 - 实际上它什么也不会做,因为我们只指定了后续任务的 reporting group,然后是 NullTask
。
有关示例,请参阅此项目中的 example
目录。
有许多可以添加的任务(包括聚合任务,用于按顺序或并行运行更多任务)。这些可以在 Maestro\Core\Task\Task
的实现中找到(也位于同一命名空间中)。
文档
您将能够在这里阅读文档这里。