Challenge Overview
Challenge Objectives
-
Target environment: Bitbucket, Rally
-
Basic Requirements: Build integration functionality for our server extension - enhance the current skeleton plugin for actual BitBucket Rally ALM integration
Project Background
Bitbucket is a Git-based SCM that is a product of Atlassian. Rally ALM (Application lifecycle management - now called CA Agile Central) is a software project management suite that focuses on the Agile delivery of projects. It allows scrum teams to define user stories, test cases, defects and other project artifacts. In order to gain higher levels of developer productivity, it is important that an enterprise’s SCM can talk to the project management tool and vice versa.
More specifically every commit should have a reference to the ALM’s story id and vice versa. T-Mobile enforces a commit log format that must include the Rally artifact ID to identify the work item that the changes are committed for. This is a common practice, however, the story in ALM does not have the authors of the commits nor links to the commits themselves. Rally Connector for Bitbucket Server is a server extension that allows Bitbucket to integrate with Rally. Unfortunately, this extension has not been supported in several years and does not work with the current version of Rally since it was purchased by CA.
You can find instructions on how to configure this connector here.
We want to build all a connector which will provide the same features as the above mentioned server extension. Earlier, we ran a challenge to build a skeleton connector which provides all the configuration parameters and builds the configuration interface for our extension. The codebase of the extension is available in our Gitlab repo (request access via forums) and MUST be used as the baseline codebase for this challenge.
In this challenge, we’re going to build the actual integration logic.
Technology Stack
Bitbucket Server Development Guide
Individual requirements
In this challenge, you are required to build the following features for BitBucket server extension for Rally ALM
-
Rally API Integration
In the last challenge, we had built out all the configuration parameters. This includes the Rally API key. Currently, the key is just saved in the BitBucket extension but no integration is done using this API key. Now, we would want to leverage these parameters to build the actual integration.
Rally Setup
Check if your target WorkspaceConfiguration has BuildandChangsetEnabled set. Your Rally workspace administrator needs to enable this for your target workspace. If it is not enabled, the connector will work, but you won't be able to see any of the changeset or change information that is associated with your Rally work items (story, defect, task).
Create a Rally API key
A Rally API Key must be created to use to access your subscription data without using your username and password.
NOTE: Make sure to give Full Access for your Rally API Key
For help creating a full-access API Key, please visit http://help.rallydev.com/rally-application-manager.
B) Rally Configuration Parameters
All configurable Rally parameters defined in existing plugin must be used and nothing should be hardcoded in the plugin code.
C) Integration Logic
The actual integration logic is as follows
-
The plugin must ensure that every commit should have a reference to the ALM’s story id and vice versa. If this is not the case, it should not allow the commit to proceed and log the results.
-
The plugin should inspect each commit message for an Artifact ID: e.g.
US19675: Completed testing of data sevice
US20183; TA1132: Adding new data service for project catalog.
DE666: Fixed defect. Problem was reg-ex was incorrect.
-
The pre-receive hook can query the commit messages for individual rally artifacts, then verify them with Rally that they do exist or not are now merely being spoofed to bypass the commit checker hook. The hook should be configurable to check if the story is in progress , and/or if the commit author is assigned to the story. These should be optional configurations.
-
Write the git author id to the Rally story, defect or task.
Final Submission Guidelines
- Submit your extension code (zip) using develop branch as a baseline. Winner will be required to submit a git patch
- Provide configuration & deployment steps for your server extension
- A video walking through your extension is MANDATORY