Challenge Overview
Challenge Objectives
-
Target environment: Bitbucket, Rally
-
Basic Requirements:
-
Ensure Current extension is deployable to both BitBucket Data Server and BitBucket Cloud
-
Ensure current extension works as is with API v1 on BitBucket Data Server and supports API v2 on BitBucket Cloud
-
Modify extension so the *pre-receive* push validator should reject changes pushed to origin that do not have well formed commit messages.
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.
In the last two challenges, we’ve built a BitBucket server extension that replicates Rally Connector for Bitbucket Server - a server extension that allows Bitbucket to integrate with Rally.
Our first challenge was to build a skeleton connector which provides all the configuration parameters and builds the configuration interface for our extension. In the second challenge, we built the actual integration logic between Rally and BitBucket. 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.
Technology Stack
Bitbucket Server Development Guide
Bitbucket Cloud Add-Ons
Individual requirements
In this challenge, you are required to modify the server extension to ensure the following
- Support for BitBucket Cloud
Our client would like to use this server extension with BitBucket Cloud. One potential approach to do this is to use a simple rest api (rally-webhook) that would process the push json request from the cloud trigger and use the existing services from connector to communicate with the Rally API (as the bitbucket connector already does)
We remain open to any other alternate solutions as well
- Support for V2 REST API
For BitBucket Cloud, the V1 API is deprecated and support will be removed from 31st December 2018. Therefore, we need to ensure that our server extension works with V2 REST API when deploying on BitBucket Cloud. So, we will need to support both API and be able to identify if the bitbucket we are talking to is Cloud or Server. See this link for more details.
- Pre-receive Push Validator to Block Changes
-
The plugin currently inspects 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 currently queries the commit messages for individual rally artifacts and verifies with Rally that they are valid (they exist in the attached workspace) or are 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.
-
The *pre-receive* push validator should reject changes pushed to origin that do not have well formed commit messages.
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