What should an automated build system do?

A build system handles this process:

Source Code System → Build → Intermediate files → Combined into installer

  • It should provide the ability to do a repeatable controlled build so that a software product can be compiled in the same way for release process.

    • This is particularly important for critical infra-structure software that customer organizations depend on.

    • It is easier to make builds repeatable if they occur on machines which are separated from developer machines

  • It needs to give quick feedback to developers when they commit code to a repository which breaks the build

    • Especially when the breakage happens on other operating systems or platforms which are different to the primary system that a developer works on.

      • For myself I primarily work on Mac Book and so it’s very convenient to know if a commit breaks the windows or linux build.

  • Speed is important - getting fast feedback to developers is more efficient than discovering the next day etc.

  • Unit tests will part of a good automated build system

  • It should place the end software product where it can be downloaded by quality assurance engineers.