follow are Types of Build…
Distributed processing Build:
Parallel processing build
Multi-platform builds
Multi-language builds
Dedicated builds
For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!
follow are Types of Build…
Distributed processing Build:
Parallel processing build
Multi-platform builds
Multi-language builds
Dedicated builds
Types of Build in Remote Agent
Build Management tools has one one capability where they can share the infrasture to build the product in less time with the help of Remote Agent Machine.
There are following types of build in remote Agent.
Distributed processing Build:
A distributed build is one in which individual steps in the Workflow are sent to be executed on multiple machines. In doing this you are able to leverage more machine power instead of attempting to run the entire Workflow on a single machine.
Parallel processing build
Remote Agents also support parallel processing. A Parallel process executes Workflows for each unique stage of the development lifecycle including continuous integration builds for developers, pre-production builds for testers and emergency builds for production control. A Remote Agent can be configured to execute builds according to the location that the binaries will be distributed.
Multi-platform builds
Workflows can be configured to call Remote Agents that are running different operating systems This allows you to execute a Workflow that builds the application across multiple operating systems or build specific components of the application on the appropriate machine. For example, a Workflow that needs to build Windows .Net components as well as AIX Oracle back-end components would use two Remote Agents one for Windows and one for AIX.
Multi-language builds
Workflows can be configured to call Remote Agents that are running different languages. This allows you to execute a Workflow that builds the application across multiple operating systems or build specific components of the application on the appropriate machine. For example, a Workflow that needs to build Windows .Net components as well as AIX Oracle back-end components would use two Remote Agents one for Windows and one for AIX.
Dedicated builds
Remote Agents can also be used as ‘dedicated build machines’. A dedicated “Build Machine” is often bigger and faster than a regular desktop machine. The dedicated build machine would be configured as a Remote Agent in which Workflows could be executed in order to improve the workflow processing. In addition, if you are using Meister’s Build Automation, a dedicated machine with multi-processing power can be used to manage the calls to the compilers and linkers and accelerate the building of C and Java applications.
Following are the steps for a complete clean build:
I like to say that there are really only two types of builds: ones that work and ones that don’t. Seriously, though, when you’re shipping a product, you should consider these two different types of builds:
The developer’s build process should be optimized for speed, but the project build process should be optimized for debugging and releases. I am talking about optimizing the process, not compiler or linker optimization switches. Although speed and debugging are important to everyone who is writing code, you must design a project build process to track build breaks and the offender(s) as quickly as possible because numerous people are waiting for a build to be released. For a developer, what seems to be most important is clicking some type of Build and Run button to make sure the code compiles without errors and then checking it in. For the build team, building without errors and having the ability to track down the person who broke the build is the most important thing.
Reference: The Build Master: Microsoft’s Software Configuration Management Best Practices
Former Microsoft Visual Studio Product Manager Jim McCarthy used to say, “Successful daily builds are the heartbeat of a software project. If you do not have successful daily builds, then you have no heartbeat, and your project is dead!”
Daily builds also mark the progress being made and can indicate when a project is struggling. In addition, having a daily build can keep the programmers in “ship mode”—the attitude that the product could ship with the complete features on any given day.
A better metaphor is that the build is your product assembly line. If your assembly line is not moving or broken, your business is hurting, because you cannot turn out a product. Look at what Henry Ford did with his assembly line. Ford did not invent the car; he just perfected the way it was manufactured with the assembly line. I think the same holds true for software: By having a good build process, your company will be more efficient, successful, and profitable, and your employees will be happier.
really like the Pottery Barn rule that was misquoted by Senator John Kerry in the second Presidential debate in September 2004. Kerry said that Colin Powell “told President Bush the Pottery Barn rule: If you break it, you fix it.” The anecdote comes from Bob Woodward’s book Plan of Attack, but Woodward actually reported that Powell privately talked with aides about the rule: “You break it, you own it.” He did not say this to the President, and it actually turns out that Pottery Barn has no such rule. Still, I think every build lab needs a poster with this rule regardless of who said it.
This leads to one of the most important rules in the build lab: The build team never fixes build breaks, regardless of how trivial the break is. That’s the developer’s responsibility. We took this a step further: The developer who breaks the build has to go to his development machine, check out the file, fix it, and then go through all the check-in process steps again.
This rule means that if you are a developer and you can fix the build break, and the developer who broke the build cannot be found, you should fix it immediately. Afterward, send an e-mail to the developer and the build team explaining what you did to fix the build, and remind your co-worker that he owes you a favor.
Chris Peters, a former Microsoft vice president in the systems and applications group, used to say that people have to remember that the reason everyone works here is to ship software. That means everyone: development, testing, product support, vice presidents, administrators, and so on. If you are not moving toward a direction of shipping a product every day, you need to talk to your manager and figure out what you are supposed to be doing. Helping fix build breaks or not breaking the build in the first place is a good way to help, but don’t forget the Pottery Barn rule!
At Microsoft, developers understood that when they joined the Windows NT group, the following chain reaction would occur if they broke the build:
We would try to call the developer at his office.
If the developer did not pick up, we would call his manager and continue up the organizational ladder until we found someone who could fix the break or at least point us to someone who might be able to resolve it.
We would call the developer at home if it was past the 9 AM to 6 PM working hours.
To follow this track, it is important to keep a list of developers’ home telephone numbers in the build lab or make them easily accessible to everyone who is working on a project. This list is especially helpful for build breaks that occur late at night or early in the morning. With the increasing number of people working from home, this list is even more important today than it was 10 years ago.
Another way to discourage developers from breaking the build is to establish a build fine or penalty. The build fine example in the following sidenote worked well in the NT group for a couple of years.
However, don’t execute the penalty by having the engineer who broke the build run the next one. Several companies try that approach, but this is another one of those “good in theory, bad in practice” deals. What usually happens is that you end up pulling a good developer off a project until some unfortunate developer breaks the build, and then you pull that person off until… you get the picture. If you entered this unknown factor into your project manager’s Gantt chart, you would see how this can mess up the development line and build progress. It really is easier and cheaper to hire a full-time builder.
Reference: The Build Master: Microsoft’s Software Configuration Management Best Practices
Performance Optimization Checklist of Build Servers
Build Infrastructure Level
1. Do you really need to build all source code or only the part of code which has changes?
2. Project should be divided into multiple modules/component which can be build independently and should be integrated when it needed.
3. Understand technology and make use of performance related features which will help you. e.g make, visual studio and maven has some feature which help us to compile only code which was changed also, some performance tuning features should be explored.
4. Compile dependent project only there are changes. no need to compile all the time.
5. Distribute application in non-compiled and to be compiled files. e.g src, docs and copy only src to comile. docs files cane be used while creating installer.
6. Plan for disk usage growth upfront.
Application Server level
System level
Build Server application level
http://www.cloudbees.com/sites/default/files/whitepapers/7WaysToOptimizeJenkins.pdf
More Important Build Definitions
Reference: The Build Master: Microsoft’s Software Configuration Management Best Practices
It is also important for groups or teams to define these terms on a project-wide basis so that everyone is clear on what he is getting when a build is released.
Pre-build— Steps taken or tools run on code before the build is run to ensure zero build errors. Also involved are necessary steps to prepare the build and release machines for the daily build, such as checking for appropriate disk space.
Post-build— Includes scripts that are run to ensure that the proper build verification tests (BVTs) are run. This also includes security tests to make sure the correct code was built and nothing was fused into the build.
Clean build— Deleting all obj files, resource files, precompiled headers, generated import libraries, or other byproducts of the build process. I like to call this cleaning up the “build turds.” This is the first part of a clean build definition. Most of the time, build tools such as NMake.exe or DevEnv.exe handle this procedure automatically, but sometimes you have to specify the file extensions that need to be cleaned up. The second part of a clean build definition is rebuilding every component and every piece of code in a project. Basically the perfect clean build would be building on a build machine with the operating system and all build tools freshly installed.
Incremental build— The secret to getting out a daily build to the test team, regardless of circumstances, is to perform incremental builds instead of daily clean builds. This is also the best way that you can maintain quality and a known state of a build. An incremental build includes only the code of the source tree that has changed since the previous build. As you can guess, the build time needed for an incremental build is just a fraction of what a clean build takes.
Continuous integration build— This term is borrowed from the extreme programming (XP) practice. It means that software is built and tested several times per day as opposed to the more traditional daily builds. A typical setup is to perform a build every time a code check-in occurs.
Build break— In the simplest definition, a build break is when a compiler, linker, or other software development tool (such as a help file generator) outputs an error caused by the source code it was run against.
Build defect— This type of problem does not generate an error during the build process; however, something is checked into the source tree that breaks another component when the application is run. A build break is sometimes referred to or subclassed as a build defect.
Last known good (LKG) or internal developers workstation (IDW) builds— These terms are used as markers to indicate that the build has reached a certain quality assurance criterion and that it contains new high-priority fixes that are critical to the next baseline of the shipping code. The term LKG originated in the Visual Studio team, and IDW came from the Windows NT organization. LKG seems to be the more popular term at Microsoft.
Situation
Approach
Solution
Results
Recommendation from Microsoft’s Software Configuration Management Best Practices
Build Management Recommendation
Recommendation for Defining a Build
Recommendation for Source Tree Configuration for Multiple Sites and Parallel (Multi-Version) Development Work
Recommendation for Daily, Not Nightly, Builds
Recommendation for The Build Lab and Personnel
Recommendation for Build Tools and Technologies
Recommendation for SNAP Builds—aka Integration Builds
Recommendation for The Build Environment
Here is a short list of what the build environment example in this chapter is about. If everyone is using the same batch files to launch a build environment, re-creating a build will be less painful.
Recommendation for Versioning
What I recommend is to read and re-read this chapter to make sure you fully understand everything in it and to grasp the importance of reliable versioning. Here is a short list of what you need to do:
Recommendation for Build Security
With all the talk about security on the Internet and in the applications that are out there, we must not forget about keeping company “jewels” safe. Here are some recommendations that were covered in this chapter:
Recommendation for Building Managed Code
You will find that building projects for the .NET Framework is a bit different than the classic “unmanaged code builds” that have been around before Web services were ever dreamed up. I went over the parts of building .NET code that tend to trip people in this chapter; the following is a quick list of recommendations:
Recommendation for International Builds
Here is what is done at most of the bigger groups at Microsoft and is thus our preferred way of internationalizing our products.
Recommendation for Build Verification Tests and Smoke Tests
Some of the general points of the chapter are:
Recommendation for Building Setup
To improve your setup reliability the following should be done:
Recommendation for Ship It!
The following list should be done as the final steps to shipping a great product:
Recommendation for Customer Service and Support
From reading this chapter you should understand why you need to:
Recommendation for Managing Hotfixes and Service Packs
A lot in this chapter was specific to VSS, but I think when you read this chapter you can draw parallels to the source code control tool you use and just copy the basic architect. These recommendations can be followed with any source code control tool but is more specific to VSS.
Recommendation for Suggestions to Change Your Corporate or Group Culture
Recommendation for Future Build Tools from Microsoft
Looking into a crystal ball that predicts the future, you should see: