A daily build or nightly build is the practice of each day doing a software build of the latest version of a program. This is so it can first be compiled to ensure that all required dependencies are present, and possibly tested to show no bugs have been introduced. The daily build is also often publicly available allowing access to the latest features for feedback. In this context a build is the result of compiling and linking all the files that make up a program. The use of such disciplined procedures as daily builds is particularly necessary in large organizations where many programmers are working on a single piece of software. Performing daily builds helps ensure that developers can work knowing with reasonable certainty that any new bugs that show up are a result of their own work done within the last day. Daily builds typically include a set of tests, sometimes called a smoke test. These tests are included to assist in determining what may have been broken by the changes included in the latest build. The critical piece of this process is to include new and revised tests as the project progresses.
Continuous integration builds
Although daily builds were considered a best practice of software development in the 1990s, they have now been superseded. Continuous integration is now run on an almost continual basis, with a typical cycle time of around 20-30 minutes since the last change to the source code. Continuous integration servers such as CruiseControl or Hudson continually monitor the source code control system. When new changes are detected, a build tool such as Ant or Maven is used to re-build the software. Good practice today is also to use this as part of continuous testing, so that unit tests are re-run for each build, and more extensive functional testing (which takes longer to perform than the build) performed as frequently as its duration permits.
- IEEE Best software practices at Steve-McConnell
- daily builds of ubuntu, updated almost everyday, a good example of what a daily build is
|This software-engineering-related article is a stub. You can help Wikipedia by expanding it.|