Part 1: Set up and configure the Agile ALM environment for automated builds
The IBM Rational solution for Agile ALM provides the environment to support teams in their day to day activities throughout an agile ALM projects. One key aspect of agility is to develop incrementally. A product increment is created at the end of each Sprint to demonstrate the new functionalities to the stakeholders.
In this example, I am using Rational Team Concert (RTC) and a project based on the Agile ALM solution (JKE – Mobile Banking) to explore the continuous builds capability. The overall process is the following
Find source code in RTC source control
Build using Apache Ant
Publish build results in RTC
Preparing the environment for automated builds
When a Project Area is created using the Scrum/Agile ALM process template (link to Agile ALM solution), a Stream and a Component are automatically generated.
Because the Agile ALM solution leverages the concept of Team Area, the first thing is to make sure that you have a stream for your team. You can create a specific stream, or change the ownership of the default stream. The point is that the steam must be owned by the Team Area (Agile Mobile Team), otherwise team members will not be authorized to deliver code.
With a stream and a component, you have the bare minimum to manage your source code. Now you want to be able to build efficiently your application on a regular basis.
In this example, I will use the Jazz Build Engine to take care of the build tasks. The Jazz Build Engine is an optional component of RTC that you can install and use (see help
for further information on installation)
For automated builds in my Agile ALM project area, I need to create a JTS user with permissions to conduct build tasks.
The new SysBuild user must have access the project repository, so it is added as a Project Area member. And to be able to run automated build, this user must be assigned to one of the Agile ALM team roles. Here I select “Development Team Member”.
To isolate the build process from the other tasks, it is recommended to use a dedicated workspace. So I create one, whose owner is SysBuild.
Defining the build assets in RTC
Now that the environment is ready for builds, I can define the elements in my project for automated build. I am using the RTC Eclipse client as creation of build elements is not supported in the web interface (in RTC 4.0.5)
I first create a Build Engine (jke.agile.dev.engine). As shown below, I want to reuse the Jazz Build Engine, but I have other option such as Hudson/Jenkins or BuildForge.
Then I need a Build Definition. Again, there are many options but I want the Ant- JazzBuild Engine template. Because I want to build my application from the Jazz Source Control, I select the Jazz Source Control option in the Pre-Build dialog.
Now that the build definition is created (jke.agile.dev), I can configure it according to my needs.
On the Overview tab, I add the build engine that I created earlier (jke.agile.dev.engine).
On the Schedule tab, I select days and hours for automated build.
On the Properties tab, I specify a couple of properties to use in my build tasks
On the Jazz Source Control tab, I select the workspace to reuse for builds, and the location to load the source file
The Ant tab contains the location for my ant build file.
This build definition is ready to be used in my Agile ALM project. I now need to start the build engine.
I have created a batch file that contains the following instructions:
jbe -vm "D:\Tools\IBM\CLM-Releases\TeamConcert404\jdk\bin\java" -repository https://localhost:9443/ccm -userId build -pass build -engineId jke.agile.dev.engine
At this point, anyone from the Agile Mobile team can request a build from the RTC Eclipse client or from the web interface.
Because I am using specific Ant tasks in my Ant script, build results are automatically published and accessible to the whole team.
Next time, I will explore how the Agile ALM team can leverage builds during their development activities (Part 2: Using automated build as part of the development activities)