I'm looking for some ready made solution for automated building of software.
In the past, we had a fully manual system where we had a dedicated machine for each supported platform ( Windows, MacOS and Linux ). When we needed to make an official build of our software, someone ran scripts on those machines which made to builds and aggerates the different build.
We partially switched to an more automated solution, mainly to be able to have nightly builds.
This currently works with all custom developed software ( Simple server on the build computers, etc. ).
However it has quickly become apparent that this will not scale and thus I'm looking for a better / ready made solution.
Our system consists of 3 main parts,
- The individual, platform dependent build computers
- A central controller server
- A user interface, to control and view made builds
Thus the requirements are also split in three (+1) parts
- Being able to remotely start a build given some general and/or platform specific parameters
- Handle multiple repositories of source code ( Being able to select between them )
- Run some post processing after the build ( Run tests, Bundling, etc. )
- Deliver the build and additional data to a central location
- Connect the user interface to the build computers
- Start build given specific triggers ( Manual, Set interval, etc )
- Store the build results
- Generate Reports on the build ( Summarize tests, etc. )
- Start new builds
- View old builds
- Delete Builds ( Manually selected, or by age )
I'd also like that build on the different platforms can be grouped or tagged together. Such that, for example, we can have 3 builds grouped together as release builds for a specific version.
Also expandability, such as, support for continuous integration, is a bonus but not a hard requirement.
I'm fine with this system consisting of multiple pieces of software ( some even custom developed ). But I would like to use existing solution as much as possible.
Some extra details.
- Our VCS is mercurial