Friday, September 19, 2008

Build and Release Definitions

These are the basic definitions every Build and Release Engineer should be aware of. Build and Release, these two terms are so related to each other that sometime they are used interchangeably. To minimize the confusion, I compiled these definitions.

Build and Build Management- The process of converting source code artifacts into some desired product executable file. Historically, this is thought of as "compiling," but it also includes things like linking, packaging. The control of the "source of the source", the build environment, build scripts and build schedules. The person who "manages" the build environment and controls execution of builds is called a Build Manager, even though they rarely have any management responsibilities. While in larger organizations there may well be a Manager of the Build Team, this is not what is meant by the term Build Manager. Think of Build Management as being in control of the kitchen, the equipment within it and the available ingredients, as well as cooking pies. In this analogy, a Build Manager is the head chef.

Release and Release Management- A release is the consolidation of all deliverable elements, whether resulting from a build, generated artifacts from another process or acquired from third parties, into a controlled staging area. It is generally organized into the same package(s) so that it can be deployed to customers or end users. A good release is the one which contains all the deliverables, control information and release notes in one package so the end customer need not to worry much about deployment. One can think of a release as a shrink-wrapped package full of "good stuff." Continuing the analogy, a release is a pie in a box with the appropriate labels affixed. The control of the selection of release components, the release environment and the tool-chain required to produce a release. Note that the description is very similar to that of Build Management. That is because these two activities are closely related. Release Management is analogous to a production line where many pies are produced, boxed, labeled and placed in a storage facility awaiting purchase or shipment.

Build management is the definition, support, and enforcement of processes for preparing software executables from source code (deployment) whereas Release Management is the same thing from deployment to production. Summarily Build is a process whereas Release is an artifacts.

Friday, September 5, 2008

Tool Spolight: Cruise

Recently there was a discussion on this new tool for Release Management called Cruise on this Journal.

Release management is often that part of the software development life cycle which has the entire team chewing its nails. Use Cruise, the Continuous Integration and Release Management system from ThoughtWorks, to remove the suspense and unpleasant surprises associated with software deployment.

Model your release work flow and ensure a hassle-free software deployment with revolutionary Pipelines. Get control of your release process by managing it through Cruise. Save time by parallelizing your tests and testing on multiple platforms. Release software quickly and repeatably with new and tested features.

Cruise draws from the extensive continuous integration experience of ThoughtWorks, the creators of the original CruiseControl.

Well, I am yet to figure out the difference between Cruise and CuiseControl.

Friday, August 1, 2008

What is the future of Build and Release Engineer? Part-1

Since the time, I have taken the responsibility of Build and Release Engineer in my organization, this is the question spiked up in my mind.
I was, in fact I am very much curious to know the answer. So I asked this questions to many people in the industry through a professional business network contacts. I received the answers to my email but for benefit of other people in the same kind of job, I will be posting those experts' views here.

I am starting with the answer of Mr. Phil Davidson, Senior Program Manager at Microsoft. I am very much obliged to him for his time to write me this.

He says- I believe it is an area that will still require people and focus, however, I believe that the mindset and activities will transform. With the current pace and change to be "agile", it becomes more important that there is a process that can allow the developers to keep focused on building products and features instead of needing to worry about setting build systems and servers.
The world of Build will need to start focusing on providing a service to the development teams and in that provide the necessary systems and support to ensure that the dev teams can deliver high quality code.
By ensuring the proper quality gates are incorporated as a part of the build or post build process ensures that once the code is checked in, you know it is in as good if not better state than it was prior to the check in.

I believe that part of the responsibility will be in the area of consulting where they can provide the dev teams with recommendations and guidance. The build service team can help them to be able to know the best ways to utilize the service and system to get the biggest bang for their buck. The release team will be able to help them in regards to deploying or shipping the highest quality products and services through making sure the right processes, procedures, and quality gates are in place or get setup.

Another area is in the area of tools. Tools that will automate and facilitate and ensure that devs can be running at as fast a speed as possible without reducing the quality nor the stability of the product/services they provide. This is really about ensuring the ability to scale up and scale out as we watch the speed of software development as well as the size and number of products continue to grow.

I believe there is a need going forward, it is up to the build and release people to make sure that it adapts to the changes being seen and adopted by the development teams around the world. The skills of how to build and ship/deploy a product in the best way to optimize the build and release experiences.

Wednesday, July 30, 2008

Build and Release Engineering

Build and Release Engineering, a term which has been synonymous with my name in my team where I am involved in Building, Wrapping and Releasing patches and fixes for various releases of the Cisco software.
I am starting this blog to sharpen my knowledge and spread the awareness about this very important but often neglected aspect of software engineering.

Declaration: I also declare that any information given here will be general in nature and will not expose any Cisco specific processes and technologies.