Challenge Overview
Challenge Objectives
-
Node.js script that publishes data from BitBucket to Rally
-
This challenge will enhance the script so that it can be called as part of a Jenkins CI build to also include build information in the Rally
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.
-
Over the last few weeks, we’ve built a Rally connector for BitBucket. The codebase of the extension is available in our Gitlab repo (access available via the forums).
-
We recently built a Node.js script that can collect the Rally API Key from the environment variables and pull together the changeset POST body(s) to send to rally & verify that they are added to specific task, defect or hierarchical item (user story).
-
This challenge will enhance the script to be callable via a Jenkins CI build to:
-
Update the changeset already posted to Rally to include a buildtag and a link back to the Jenkins build job (when using Bitbucket Data Server)
-
If using bitbucket.org, we won’t be able to use the Atlassian plugin, so we will use the Node.js script as part of the Jenkins build. When the initial pull-request is approved and merged, a changeset will be added to Rally as part of the Jenkins job. A second Jenkins job that performs a more rigorous test and evaluation of the merged code will either pass or fail, marking the published artifacts as ready for release or not, and marking the changeset as having passed and ready for release or not.
-
Technology Stack
-
Node.js
-
Rally (You can request your own demo account, and details for a shared account can also be found in the forum)
-
Bitbucket (data server, and cloud services)
-
Jenkins
-
Deployment instructions can be found in this branch. There’s a README.md and Validation.md file that can help you get set up: https://gitlab.com/bitbucket-rally-extension/node-scripts/tree/deployment-documentation
Code access
A link will be provided in the forum that can be used to grant yourself access to the code in Gitlab.
Individual requirements
Update an existing changeset
If a changeset already exists in Rally, we need to have a script that can be used to add the Jenkins buildtag and link back to the Jenkins build job. This can be either a new script or an extension of the existing script. This will be the flow if we are using the Bitbucket Rally Connector (https://gitlab.com/bitbucket-rally-extension/bitbucket-rally-connector).
So, when using Bitbucket Data Server, the plugin will post the changeset to Rally whenever a pull request is merged to the master branch. At this point Jenkins will build and validate the code in master. If the Jenkins build passes, we want to have and use a script that will update the changeset that’s already been posted by the Atlassian plugin.
Creating a new changeset
When a project is hosted on bitbucket.org, the client cannot use the Bitbucket Rally Connector, so the Node.js scripts will handle all the changeset functionality. We need to ensure that the current scripts can handle properly creating the changesets on Rally (should already be working), but this challenge will extend them to also include functionality to send along Jenkins build information to the changeset.
When the initial pull request on bitbucket.or is approved and merged, a changeset is pushed to Rally by the Jenkins job before it’s fully tested. A second Jenkins job will perform a more rigorous test and evaluation of the merged code and will mark it as passed or failed. The script needs to mark the changeset on Rally as having passed validation and ready for release or not.
Deployment guide and validation document
Make sure to require two separate documents for validation.
A README.md that covers:
-
Deployment - Please use the existing deployment docs in the branch mentioned above, but extend them to include anything new necessary for this challenge.
-
Configuration - The configuration details have to be very detailed. Feel free to use the existing documentation, but don’t expect that it’s fully comprehensive. You’re responsible for the documentation.
A Validation.md that covers:
-
The two scenarios above. We need to ensure that the scripts work as expected for the two deployment environments, but you must also cover edge cases to ensure the scripts are robust even if problems arise when running them due to missing data, lost connections to services, etc...
Validation video / screencast
-
Videos are required for this challenge. You must submit a video covering each deployment scenario, so at least two videos are required.
-
Please ensure your videos properly demo the functionality, not just the setup.
What To Submit
-
Patch file against Git commit hash c1bc7c72 for this repository: https://gitlab.com/bitbucket-rally-extension/node-scripts
-
README.md file
-
Validation.md file
-
At least two videos covering the validation requirements and showing the app working. Examples will be in the forum