Saturday, March 21, 2015

Build and Release Training


Click Here

Training Duration – 16 Hours 
Mode – Online based
Email – info@scmgalaxy.com
More info -
Training - http://bit.ly/scmgalaxy-training
Calender - http://bit.ly/scmgalaxy-calender 


Lab Setup Details - Prerequisites
Operating Systems - Windows 7 or Linux(RHEL 7.X or Ubantu)
JDK 1.7 or Higher
SCM Tool Clients Installed (SVN, GIT, Perforce)
Servlet container like GlassFish and Tomcat (If one wants to host Jenkins outside) – Optional
[If trainee is having any specific learning agenda to be addressed in this training apart from the table of Content as below; please email me @ info@scmgalaxy.com]
Table of Content
Continuous Integration with Jenkins
  • What is Software Configuration Management
  • What is Build and Release Engineering
  • Introduction of Version Control Management?
    • Basic usage of Subversion
    • Basic usage of git
  • Introduction of Build Management?
    • How to write ant script?
    • How to write Maven script?
    • How to write MSBuild Script?
  • Introduction of Release Management?
  • Benefit of Continuous Integration?
  • Different Continuous Integration Tools?
  • Focus on Jenkins
  • Installation and Setup of Jenkinks
  • Configure a Job to Build the Project using SVN /GIT and ANT/Maven
  • Using Build Script (Ant, Maven and MSBuild) with Jenkins
  • Authentication and Authorization in Jenkins
  • Lab and Assignment
  • Nodes Setup in Jenkins
  • Labels, Tags and Notification using Jenkins
  • Empowered with Plugins in Jenkins
  • 20 Popular Plugins and Their Usage
  • Integrating Jenkins with Junit for automated testing
  • Integrating Jenkins with HP-QC for automated testing
  • Integrating Jenkins with Cobertura for test Coverage
  • Integrating Jenkins with Sonar for static code analysis
  • Release and Deployments using Jenkins and Nexus
  • Advance Jenkins
    • Jenkins Scripting
    • Jenkins Command line
  • Reporting and Dashboard using Jenkins
  • Lab and Assignment

Sunday, October 7, 2012

Interview Questions for Build & Release Engineer

If you are preparing for an interview as Build & Release engineer position, you are reading the right blog. I received an email from a reader yesterday about it, therefore I decided to write down some questions.

During my 6 years of B&R experience, I have learnt that tools used for CM, Build management and scripting vary a lot in different corporations. You might be using InstallShield for deployment in one company and a simple MSBuild script in another. As a build & Release engineer you must master at least one scripting language- Perl, MSBuild or Shell. That is really helpful even if you are not currently working on any of these.

Regarding interview questions, I can think of following-
  • How do your handle upgrade scenario in InstallShield wizard? How can you prevent a product being downgraded while installation.
  • Can you write a custom action in VB/C# and integrate it with Installshield wizard?
  • How do you implement Continuous Integration using CruiseControl?
  • What are the things you change on your target system while deploying?
  • How can we migrate from one CM tool to another, say SVN to TFS?
  • Which one is a better Build Management tool- CruiseControl or Hudson? Why?
Please feel free to drop me a mail regarding any of these questions. Good Luck.

Sunday, February 20, 2011

Standard build process using Make & Ant- Part 1

(Mostly, I interact with makefiles but I have always been interested in studying Make & Ant together. Here is the first post in the series)

A simple build can be started from a command line simply by executing 2 statements- one for compiling and another one for linking. But as the software grows and consist of many modules, dependencies get created and a sequence of commands are required to be executed. Additionally, we needed to add pre and post actions around the calls to the compilers such as a check-out from version control or copying of deployable objects to a test location.

Make & Ant make it happen in a standardized way. Ant does the same thing for Java environment what make does for C++. Ant is a platform-independent (like Java) scripting tool that lets you construct your build scripts using many built-in commends like delete, jar, get, mkdir, exec and copydir.

Another basic difference between Ant and Make is that Ant uses XML (build.xml) to describe the build process and its dependencies, whereas Make has its Makefile format.

Friday, September 25, 2009

Best approach to prepare install patch for an enterprise application

I will start with something I have worked on, then people can share their approaches. I worked in InstallShield PackageForWeb (A light weight version of InstallShield) to install patch of an enterprise application over a cluster of windows machines. I believe using an InstallShield product for installing is much easier and controllable then any other language like C#. Regarding the complex install script, I don't think we need to play with the script. Latest InstallShield provides pretty much user-friendly configurable mechanism which automatically generates the install script.

If your enterprise is too complex to be handled by general InstallShield settings and you feel the need to modify the install script but worried to mess it up. You can try this- Launch a separate script written in any Windows Automation Languages (AutoIT or Auto Hotkey) during installation and let that script handle the rest. This approach is pretty useful because these windows automation scripting languages can do anything with windows we can think of, I mean anything. I have successfully tried this approach for over 2 years. Suggestions are welcome .

Sunday, August 23, 2009

Why working for Cisco is so great?

Sometime I wander why am I so satisfied with my job of build and release engineer, it is quite an offbeat career. I think it has very much to do with the fact that I am working on a Cisco project. Everything around me is Cisco, Cisco's network, Cisco's processes, Cisco's people and Cisco's world class working environment. Here I am listing down some of the points in this reference.

VPN is wonderful- It feels so satisfying reading your mails on your office laptop using VPN even if you are on vacations siting 2500 KM from office. It gives me the feeling that I am not missing any update.
Responsible reporting- Weekly Update meetings with Cisco managers give feeling of responsibility. Apart from cultivating professional attitude, it feels good while interacting with so important and influential people around the globe.
Cisco's resources- Knowledge-rich resources enables you to work with more confidence. Ranging from online technical resources to industry updates mailer, everything is so perfect that it feels working in a truly world class organizations.
Wonderful people- Fortunately I have some of the best skilled engineers and most professional managers to work with. Learning from an old-timer expert and reporting to such great managers equips me with professional aptitude.
World class infrastructure of Infosys- It adds moon to the night when I hit the beautiful pool side gym in the evening after hard day's work. I feel proud walking in the rain sometimes on wide beautiful roads laid in the green campus of Infosys.

All these things coupled with other numerous untold facts add enthusiasm to life and my work here in Infosys for Cisco.

Friday, February 27, 2009

Release Management: Central Function or Dispersed?

Mr. Andrew, Build and Release Manager at Marks and Spencer asked a question about the release management on my LinkedIn professional group. I think this is the question on the mind of many release managers. Following is his question and my subsequent answer. There were some other beautifully crafted answers to the question but here I am presenting only my answer.


Andrew's Question: Hi, I'm trying to understand what is the best practice for Release Management in a very large organization. Currently I have a central team of about 25 Release Managers that manage releases throughout the entire lifecycle (into System Test, System Integration Test, User Acceptance Test, Operational Acceptance Test and Production).

However, I'm not sure if this is the best model for the business. My development colleagues have suggested that releases into System Test (not int. test) may be better controlled via the Development Teams, thus increasing release turn-a-round (less red tape!), although this brings concerns of control, environment access, etc, etc, into my mind.

I'd like to canvass ideas and thoughts around this please. Many thanks in advance of your support, Andrew

My Answer: There is no single model that fits for all but I don't think releases into system test can be controlled via development team in an efficient way. In fact such a move can divert the development team from their core function along.

Assuming release manager as a single point of contact in your organization, transferring such work to development team could bring a situation of uncertainty amongst people requiring a release. Depending on the size of organization, there will be a number of people looking for the right point of contact for their release requirement/advice along with the nightmare of tracing the culprit if anything goes wrong.

Sunday, December 21, 2008

Assuming the ultimate responsibility of Build Release Engineer

Recently I read a book "Responsibility at work" by Howard Gardner from the Infosys central library. It was a thought provoking collection of research articles from various scholars working on various aspects of responsibility, ethics, dos and donts at workplace.
One article which I liked the most was concentrating on "Taking Ultimate responsibility". When a reader reads an article, he relates it to himself and that's what I did. I don't remember the exact article but I will summarize the content and how it is related to my work.

When I reach office, I generally have 9-10 tasks at my end waiting for my actions, these may be mails awaiting my response, regular builds awaited to be monitored, regular merge notification response queries from various teams. As per the article, it is my ultimate responsibility to address them without even considering the level of effort and recognition.

First thing should be to priorities them and note down at daily planner and if possible assign deadlines to them. Being a build and release engineer, I should go one step ahead of my defined role of releasing the builds, it should include maintaining consistent bug deadline monitoring and resolving inter-team defects conflicts. That's how we take "Ultimate Responsibility".