Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have been using open source projects for a while and been developing upon the open source applications and every so often I come across the words 'Nightly Build' and I have always been curious as to what it actually means. Does it literally mean the projects are done purely as side projects (usually at night after everyone has finished their day jobs) and there's no true contributor/dedicated development team or is it more complex than that?

share|improve this question
9  
Google failed you? joelonsoftware.com/articles/fog0000000023.html was pretty high on the list. Please update your question to identify specific things missing from this blog posting. –  S.Lott Mar 9 '11 at 21:31
add comment

4 Answers 4

up vote 21 down vote accepted

No, it means that every night, everything that has been checked into source control is built. That build is a "nightly build".

share|improve this answer
6  
Typically there is a machine running a script that will automatically pull all changes from the version control system, compile (build) all the code, and then post it somewhere to download or (if its a website or service) publish it to a test system and start it running. Another name this falls under is Continuous Integration System, although that may imply that a build is done the moment any commit to the VCS is performed. –  CodexArcanum Mar 9 '11 at 21:29
1  
It should also increment the version and stamp everything with the correct version number. Nothing is more frustrating than dealing with random builds from programmers that are built from stale code and wrong version numbers. A nightly build gives everyone a build and a version number they can trust. –  james Mar 10 '11 at 1:40
add comment

Generally it means an automated build that is done once a day, typically after the end of the day for most of the developers. For projects with developers in multiple time zones it's generally a compromise time. The idea is that everyone who is going to check in code "today" has done so, and the automated build will make sure that everything compiles, and hopefully run the unit tests and any other automated tests etc that exist, then produce a final installer/executable etc.

share|improve this answer
add comment

It means a build that is performed at the end of each day of development. If you use a continuous integration server, it will generally be configured to build the code and run the unit tests on every check in. At the end of each day you may want to run more extensive tests, regression test and integration tests for example, which take too long to run on each check in and these would be triggered after the nightly build. If you have a full continuously delivery pipeline the nightly build may also be used to deploy the built code to environments for user testing.

share|improve this answer
add comment

The term is frequently used for large projects where a complete rebuild of the finished product from source takes too long for the individual developer to do this as a part of their normal development cycle.

Instead a complete rebuild is done automatically during the night so the build computer have 8-10-12 hours to do the build and have it ready for the developers coming in the next morning, so they can continue working on their individual tiny bit on top of the new version.

These days, it is frequent that the project includes a lot of tests ensuring the correct operation of the code, as well as generate and publish documentation from the source (like javadoc).

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.