I am thinking of writing a daemon and an interface for a simple build/continuous integration tool.
By 'simple' I mean:
Terminology:
- Job - a named list of user defined commands to be executed on a code from source code repository. Additionaly, Job can have subscribers - users who receive notifications about failures.
- Each Job execution is a build, that can be successful or not successful in both cases it would also have an output log attached to it.
UI:
- A list of Jobs page, where you can see the status of latest build;
- Clicking on a Job presents you with a Build list of that Job.
- "Create/Edit Job" - visible/used only by administrators (editing is also limited to administrators).
- "Subscribe to Job" - is possible for all users (like in Project view in Maniphest).
Daemon:
- Export some branch to a temporary directory (git archive 'master' | tar -x -C /tmp/<build-dir>)
- Execute arbitrary number of user commands, stop on first failure and save build output.
- Send a notification for subscribers.
The idea/rationale is: people at my work expressed they would like to have tools integrated into single interface rather than bunch of different urls to remember.
I don't have any code, thus I ask for triage - would you find this application worth merging into main project? And if yes, would you have any advice of how to proceed? In the sence that it is not a trivial change and should I create a single differential revision for all this, split this task into smaller ones, etc.? Any other helpful advice is ofcourse very apreciated too.
P.S. A name I am thinking for this application should add coolness too: "Phusion", which by definition means combining some pieces into a single entity; and fits the Phabricator naming convention. :-)