I need some clarifications on the responsibilities of the Build Script and the Build Server.
I read several articles on the Net about continuous integration and builds. Including
- The F5 Key Is Not a Build Process
- The Build Server: Your Project's Heart Monitor
- Daily Builds Are Your Friend
And I had a conversation with my advisor about the build process of our software. Because he is very experienced I trust his statements, but I were left with confusion.
As I understand it, from my research (and please correct me here, since it is what I am asking about) the ideal should be as following:
- every project has its build script
- this script builds the project
- this script makes sure the dependencies are built previously
Since dependencies could be other project, with their own build script a tree-like hierarchy accrues. There may be a top build script which builds all projects and applications.
However the Build Server's responsibilities are:
- check out the repository
- trigger the build
- trigger tests and other QA tools
- make the artifact available
This may be triggered manually, nightly or whenever the repository changes
The objectives of my advisor are, as I understand them, that one build script is way to inflexible and not maintainable (Aside from the fact that it would take very long from creating one for our legacy code base). Also the Build Server should maintain the dependencies, for example to use older dependencies when creating them new fails.
And particular for Ant
as it was the concrete subject, is not able to build all kind of different technologies which are used in the code base, and is not able to maintain the dependencies.
Can you please elaborate the objectives, and clarify the responsibilities?