IBM Rational Jazz Source Control and Build Management Tool Tutorial

The Jazz Source Control is a repository in RTC, which can hold the source code and any other artifacts like documents or HTML files or any text files. And Jazz source control management comprises of several components like component, changeset, stream, repository workspace etc.

In this tutorial, we will learn more about the components and functions of Jazz Source control along with Build Management module of RTC. 

NOTE: This tutorial has many images so allow it to load properly. 

In this tutorial we are going to take an in-depth look at “Jazz Source control” using “IBM Rational Team Concert” and it is based on version 6.0.2.

IBM RTC Jazz Source Control & Build Management

Introduction to IBM Rational Team Concert

As mentioned above, IBM Rational Team Concert (RTC) is one of the key components of IBM Rational CLM solution.

Today with ALM solution, project teams are looking at a solution which is integrated with execution. IBM Rational Team Concert helps Project Managers and the Developers to maintain the few artifacts within one single repository.

The artifacts are:

  • Work Item Management
  • Project Planning (Supports Agile Scrum or Waterfall)
  • Software Configuration Management (SCM)
  • Build Management

All the above components are well integrated to provide complete traceability of work that is performed from a development perspective. Now, let’s take a look at some of the concepts involved in Jazz SCM.

Any development team consisting of multiple members work with a large base of source code for an application that is being developed. Each team member works with the same source code, changing one or more files to work on a new feature or to fix a defect. The team member checks if the changes are correct, and then shares those changes with the rest of the team to a common area.

At the same time, other team members will work on the tasks assigned to them and make changes to the source code. So a source control tool helps in organizing the team’s source code or documents, tracking them and sharing changes to a common area thereby assisting the team to complete the tasks assigned to them.

In my previous tutorial, we saw how work items (like Story, Task, Defect etc.) hold important project information. In extension to that, these Task items will now be linked to the changes in source code.

Components of Jazz Source Control

The Jazz Source Control is a repository in RTC, which can hold the source code and any other artifacts like documents or HTML files or any text files. This repository is managed by Jazz Team Server and is accessed using a URL which we will see in this tutorial.

Let’s look at the components involved in Jazz Source Control and how we will make utilize it.

#1) Change Set

A Changeset is a collection of file or directory changes which are typically grouped together. In the following sections, you will see how multiple changes to source code are grouped into a changeset.

#2) Stream

A stream is used to store entire team’s changes. Typically when all the team members make changes to the source code, they commit or deliver the changes to the projects mainstream. Before they deliver the changes, they have to assign the changes they made in the source code or any artifacts to a Task work item which a team member is assigned to.

#3) Component

A component holds all of the artifacts which include the source code and any other project artifacts.

#4) Repository Workspace

A repository workspace is an area where you can view and modify version controlled artifacts. The creation of Repository Workspace is a must for every member working on source control artifacts.

So if there are 10 members working on Jazz Source Control repository then each one of them should create at least 1 repository workspace to work on version-controlled files.

How Do Jazz Components Work?

Let’s look at the workflow of how the above components work together as integrated.

The flow starts from left as shown below with the first developer doing the changes in his development IDE like Eclipse or Visual Studio.Net to the source code and then checks-in the changes to the repository workspace and DELIVERS the changes to the projects main shared work area called the Stream.

The second developer while working on his source code changes will ACCEPT the changes into his own workspace. While doing so if there are any conflicts in the same line or multiple lines then he has to manually merge those changes.

IBM Jazz Components

Jazz SCM Usage

In order to work on the Jazz SCM, the users must do the following. I have taken the above scenario and explained with 2 users working on the same code base. In this tutorial, I am using a sample Java web project code in Eclipse IDE. The same procedure can be followed in Visual Studio.NET for .NET code base as well.

User 1 Activity

  1. User1 shares the project to the Jazz source control
  2. User1 makes changes, checks-in and delivers the changes to the project STREAM. Remember that there is no explicit check-out required. As the user makes changes, it is considered as checkout.

Let’s now look at how the above 2 steps are done in Eclipse IDE as User1. So the first user logs into the RTC project area and switches to the Java perspective.

A sample HelloWorld Maven web project is created and it will be uploaded to Jazz source control for the team to work on.

(Note: Click on any image for an enlarged view)

Sample Project Uploaded to Jazz Source Control

Share project to Jazz Source Control as User1

#1) User1 logs into the RTC project area and opens the Java perspective where the Maven project will be visible in the Package Explorer view. To share the project to Jazz source control right click on the project and then select Team=>Share Project

RTC Share Project

#2) Select Jazz Source Control and follow the remaining steps to complete the upload to the Jazz repository

Select Jazz Source Control

Create a new repository workspace for User1

Create a new repository workspace

Select the Project stream. Remember, that the stream and component were created by default when the RTC project area was created. You can create your own stream and component as well. For this exercise, we will use the default ones created already.

Select a Project Stream

Ensure that the project to be shared with Jazz source control is selected. Click Finish.

Share Project in Jazz

#3) You can now see that the User1 Workspace is associated with the Maven project in the Package Explorer which means the project is now under Jazz source control repository.

Workspace associated with the Project

#4) The project is shared to Jazz source control but it is not yet visible to other team members. For this, a Deliver operation should be done. Go to Pending Changes View and you will see an Outgoing folder. Right-click on that Outgoing folder and select You can see change set under the Outgoing folder. It can be a comment or a Task work item assigned to the developer

Project Delivery Operation

#5) The project is now available in the project stream. So other users can now create a repository workspace and do changes to the version-controlled project in their own local Eclipse workspace

Project Visibility

User2 Activity

As User2 will be accessing the repository for the first time, the following actions need to be done.

  • User2 logs into the RTC project area
  • Creates a repository workspace and downloads the project uploaded by User1
  • Initially, the project will be downloaded to the local machine from the jazz repository for doing changes. Hence for the first time, the User2 need not ACCEPT any changes. But subsequently, the user will need to ACCEPT the changes
  • User2 does the changes and then delivers those changes to the stream.

#1) User2 creates a repository workspace as shown below. Right-click on the stream and select New =>Repository Workspace

Create New Repository Workspace

Enter a name such as User2_Workspace and then click Next to follow the remaining steps.

New Repository Workspace

Select Repository

Read Access Permission

Components to Add

Click Finish to start downloading the Maven project from the repository to local machine eclipse workspace.

Load Eclipse Projects

Load Repository Workspace

Click on Finish

Loading Repository Items

#2) Now you can see the project which is linked to User2_Workspace

Project Linked to User Workspace 2

#3) Open the index.jsp file and make some changes. Remember there is no checkout and this change is done as User2. After making changes to the file, SAVE the file. At the bottom of Pending Changes view, you will find an Unresolved folder.

Unresolved Folder

#4) If in case you want to Undo the changes, then you can do so by right-clicking on the Unresolved folder and select If that is not required, then proceed to the next step.

Undo Changes

#5) Now right click on the Unresolved folder and select Check-in All.

Select Check in all

#6) Assign a TASK work item to the changeset and deliver the changes to the stream. Right-click on the changeset which shows as <Enter a Comment> and select Related Artifacts =>Associate Work Item

Related Artifacts

Select the Task work item assigned to User2 and click OK

Select Work Item

#7) You can now see the changes associated with the Task work item and can now deliver the changes to the stream.

Deliver changes

CLM Default Component

#8) You can also view the History of changes to any file. Right-click on the file in the Package or Project Explorer and select Team=>Show History

Show History

History of Items

#9) You can revert back to any previous version by right clicking on any previous Version ID and selecting Load. After this, you will need to check in and Deliver as usual.

Select Load

User1 Activity

Back in the User1 workspace, since User2 has delivered the changes, User1 will now see the changes as Incoming. Right-click on the Incoming folder and then select Accept.

Accept incoming folder

The changes done by User2  is now populated in the User1 workspace. So User1 workspace is up to date on the Jazz repository.

Up to date User 1 Workspace

As User1, now modify the second line in the <body> tag to produce a conflict assuming that even User2 does a change on the same line.

Modify Body Tag

As usual save the file, Check-in All, Assign to a Task work item and Deliver the changes to the stream.

User2 Activity

User2 will see the change in Incoming folder. But at same time User2 also modifies the same line.

Change in Incoming folder

Save the file. Right-click on the unresolved folder and select Check in All

Unresolved Check in

Assign a Task work item before Deliver. Right-click on the changeset titled <Enter a Comment> and Associate a Work item. Click on OK once done.

Task Work

Select Work Items

Right-click on the Outgoing folder and select Deliver

Outgoing Folder

You will notice that the changes cannot be delivered, as there is a conflict. We need to resolve the conflict and then proceed with Deliver. Click on OK

Deliver Failed

To resolve the conflict, first of all, accept the Incoming changes. Right-click on the Incoming folder and then select Accept

Incoming Folder

In the Auto, Resolve box select the Resolve Later option

Auto Resolve conflicts

Double-click on the index.jsp file which is shown in the Unresolved folder.

Pending Changes

Right click on the index.jsp file and select Resolve with mine. This option will retain the changes done by the current user which is User2. Resolve with Proposed will update the file with the incoming changes done by User1.

Resolve with mine

Confirm resolve with mine

Click on Yes to proceed and then select the option Resolve as Merged on the right-hand side.

Resolve as merged

Now right click on the change set below the Outgoing folder and then select Deliver

Outgoing change set Accept

Now login as User1 and Accept the changes from the Incoming folder.

Build Management

IBM Rational Team Concert supports build management as a logical extension to the version control activities which was explained above in this tutorial. Multiple team members deliver their changes frequently preferably on a daily basis and each of this integration is verified by an automated build to detect any defects or errors as quickly as possible. This leads to the concept of Continuous Integration. The automated build is normally done on a dedicated build server and not on a developer machine.

To get started with build management activities in RTC on the build server, you will need to download and install Build System Toolkit using the IBM Installation Manager. For version 6.0.2 it is available in the Jazz.net download site.

The installation instructions can be found on this page.

To define and run any build you will need the following 2 build artifacts

  • Build Engine which helps to run the defined build. This is available once the Build toolkit is installed
  • Build Definition which helps to identify any build script like ANT or Maven

All of the Build Management actions are done on a dedicated build server and a separate repository workspace has to be created for the build. Do not use any existing developer repository workspace.

Starting Build Engine

In RTC, create a Build engine as shown below. Right-click on the Build Engines folder and then select New Build Engine

Create Build Engine

New Build Engine

Click Next>

Enter an ID and select Jazz Build Engine and click on Finish

Jazz Build Engine

Click on Save in the Build Engine screen

Maven Build Engine

Start the Build Engine

To start the Build Engine, go to the directory where it is installed and then run the jbe.exe program found in the build toolkit eclipse directory

D:\IBM\TeamConcertBuild\buildsystem\buildengine\eclipse

Run the program from a command prompt as follows

 Maven Build Engine

Replace the values as per your server details

Replace Values as per server details

Create a Build Definition

Right-click on the Builds folder and select New Build Definition and click on Next

Create a Build Definition

New Build Definition

Enter an ID and select Maven – Jazz Build Engine as the build template. Click Next

Maven- Jazz Build Engine

Select Jazz Source Control and select Finish

Select Jazz Source

In the Overview Tab of the Build Definition, add the Build Engine created earlier and then click OK

Add Build Engine

CLM Build Definition

In the Jazz Source Control TAB select or create a new Build Workspace and enter a load directory. This is the directory where the project will be downloaded and the build will be done to generate the WAR file. Each time when the build is done, it will be deleted and the latest project content will be downloaded for the build.

Create a Build Workspace

Just below in the same TAB, you can see the option where latest changes will be accepted before any new build and only if there are changes the build will be done.

Accept changes in new build

In the Maven TAB, enter the location to the pom.xml file. The project will usually be downloaded to the load directory. So the pom.xml location would be D:\LoadDir\HelloWorld-Maven

Enter goal as install.

Enter Maven home directory without the \bin

Save the Build Definition.

Project Location

Request a build

In the Team, Artifacts view right click on the build definition and then select Request Build.

Team Artifacts

Click on Submit.

Request Build

The Build result is shown as completed successfully and WAR file generated in target directory will be shown in the package explorer.

Complete Build Result

Conclusion

In this tutorial, we have seen how to use version control module within IBM Rational Team Concert and how work items play a very important role in traceability of the source code.

Most important part of the SCM activity in RTC is that it is completely integrated with the Build Management which defines the concept of Continuous Integration.

We also learned about the Build Management module of RTC which accepts latest changes from the Jazz SCM repository and performs the build.

In my next tutorial, we will see an extension to this build activity which is – Auto Deploy using another IBM tool called IBM Urbancode Deploy.

Stay tuned!!!

Let us know your thoughts/suggestions in the comments section below.

3 thoughts on “IBM Rational Jazz Source Control and Build Management Tool Tutorial

  1. Good tutorial.
    Unfortunately, RTC is very archaic compared to GIT its integrations and ecosystem, there is no reason to use it in modern software development, aside from the obligation imposed by long living contracts in slow to evolve big companies.

    The level of possibilities and practices with distributed version control systems (GIT is dominant), simple speaking: it can’t even compare. RTC served well its purpose and I currently using it, but time to retire it.

Leave a Comment