buildfoundation / mainframer

Tool for remote builds. Sync project to remote machine, execute command, sync back.
Apache License 2.0
1.73k stars 163 forks source link

Plugins system! #182

Open artem-zinnatullin opened 7 years ago

artem-zinnatullin commented 7 years ago

At the moment the only ways to customize Mainframer behavior are:

There are multiple users (including myself) who want custom behavior like @AndreasBackx with Docker integration #167 and @crysxd with AWS EC2 integration #181.

We can of course suggest people to fork Mainframer and maintain own fork with the integration (which complicates life for everyone).

Or we can try to design and develop plugins/hooks system that'll add extension points to Mainframer so such integrations could be maintained as separate projects (that we can list in README) and plugged into Mainframer by modifying only config files.

So far I see it as config entries that'll allow user to specify plugins (in form of executable binaries/scripts) to be run:

Additional information (like working directory, user command, etc) can be passed as environment variables, plus plugins are of course welcome to read Mainframer configs and store their configs in .mainframer folder (we'll just need to agree on file names to avoid conflicts).

@ming13 @dmitry-novikov @yunikkk @ghostbuster91, @pawegio thoughts?

artem-zinnatullin commented 7 years ago

Most likely we'll need to allow plugins to resolve some configuration parameters for Mainframer, ie dynamically resolve remote machine connection parameters.

artem-zinnatullin commented 6 years ago

I still think this is very important feature, but I've removed it from 3.0.0 milestone.

We can ship initial 3.x without it and add it later.