https://github.com/dantleech/maestro2
Repository Management System for PHP
https://github.com/dantleech/maestro2
Last synced: about 1 year ago
JSON representation
Repository Management System for PHP
- Host: GitHub
- URL: https://github.com/dantleech/maestro2
- Owner: dantleech
- License: mit
- Created: 2020-12-05T23:27:23.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-01-07T08:30:38.000Z (over 5 years ago)
- Last Synced: 2025-04-14T01:12:43.407Z (about 1 year ago)
- Language: PHP
- Size: 854 KB
- Stars: 19
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Maestro2
========

Maestro2 is a Repository Manager System for PHP.
Think of it like Ansible for repositories.
- Perform upgrades on multiple packages.
- Standardize configuration accross repositories.
- Run CI
- Conduct surveys (discover latest tags, CI status etc)
This project is a work-in-progress.
How It Works
------------
Maestro is essentially a concurrent task runner which is conveniently adapted
for working with repositories.
It is your job to create a _pipeline_ class. This class will be instantiated
and passed the _configuration node_, and it must return a _task_. This _task_
can be an aggregate of many tasks.
Configuration
-------------
### `maestro.json`
This is the main configuration file, which can look something like:
```
{
"core.inventory": [
"example/inventory.json",
"example/secrets.json"
],
"core.templatePath": "example/templates",
"core.workspacePath": "var",
"core.concurrency": 10
}
```
The inventory files are where we define our repositories and variables:
```
{
"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"
}
]
}
```
The inventory files will be merged and cast into configuration nodes which can
be used by pipelines.
Pipelines
---------
Create a pipeline and ensure that it is autoloadable, for example:
```php