views:

370

answers:

4

Where I work we use a set schedule to build our applications. What is involved with builds? What is involved with getting an application to build somewhere other than at the local host?

+5  A: 

I came across this just the other day... It helps clarify some things regarding building ASP.NET websites. Not a definitive answer, but worth a look.

http://msdn.microsoft.com/en-us/library/399f057w.aspx:

ASP.NET offers two options for precompiling a site:

Precompiling a site in place. This option is useful for existing sites where you want to enhance performance and perform error checking.

Precompiling a site for deployment. This option creates a special output that you can deploy to a production server.

Additionally, you can precompile a site to make it read-only or updatable. The following sections provide more details about each option.

Neil N
They are going to close this soon...but thanks That article is going to help.
Eric
@Eric - I don't think anyone is going to close this. It's a good question.
unforgiven3
@unforgiven- It was already closed before. I voted to reopen, I never thought it was a bad question
TStamper
@TStamper - ahh, I see - well, if it gets closed again I'll also vote to reopen.
unforgiven3
+3  A: 

There's a wikipedia article on the subject:

In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact(s) that can be run on a computer, or the result of doing so. One of the most important steps of a software build is the compilation process where source code files are converted into executable code.

While for simple programs the process consists of a single file being compiled, for complex software the source code may consist of many files and may be combined in different ways to produce many different versions.

The process of building a computer program is usually managed by a build tool, a program that coordinates and controls other programs. Examples of such a program are make, ant, maven and SCons. The build utility needs to compile and link the various files, in the correct order. If the source code in a particular file has not changed then it may not need to be recompiled (may not rather than need not because it may itself depend on other files that have changed). Sophisticated build utilities and linkers attempt to refrain from recompiling code that does not need it, to shorten the time required to complete the build. Modern build utilities may be partially integrated into revision control programs like Subversion. A more complex process may involve other programs producing code or data for the build process.

Jon B
Thank you Jon! +1
Eric
+4  A: 

The basic purpose of a build is to ensure that consistent set of all files needed for the website are deployed together.

This is typically accomplished by retrieving the files from source control, packaging them in an appropriate archive or archives (called artifacts of the build process) and then having scripts which send these files to the production or QA servers where the application is then launched.

Depending on the technology and the project, the build script might compile files, run tests, create archives, copy files to different locations and things of that nature.

There are different tools to support the build process to provide the underlying scripting ability. Build scripting can sometimes have unique properties, such as ensuring that a given task is only run once even though different parts of a larger build need to ensure that it is run (such as a task to create a directory to deploy artifacts, the directory is only created once and the build script engine (such as NAnt) makes sure that even if the task is called multiple times it is only run once per build.

If you want to understand more about builds, look around for some open source projects that use a technology you are familiar with, and look at their build proceedure (how you change code and deploy it).

Yishai
+1 for the first para.
Paul Suart
Thanks Yishai! +1
Eric
+4  A: 

This Joel On Software article is my favorite explanation of builds, daily builds, build servers of all time.

His central thesis in this and many other articles is the more effort it takes for you to create a build (which means any compilation or transformation of source files, including changing their location so that they will be production/test ready) the less productive and lower quality your software will be and the more mistakes you'll be prone to during deployment/builds. Ideally, with a web application, you have a single script that you can double click, it grabs the most current files from source control, compiles them, and deploys everything to the target location.

Many commercial products exist that can help you with this end. I like Team Foundation Server but it may not fit your Budget/Culture/Programming language choice. Having a custom build script is not the worst idea either because it gives your programming a team a great view of your process.

marr75
Really helpful +1
Eric