Associating multiple work items to a commit in DevOps
Summarize
Summary of Associating Multiple Work Items to a Commit in DevOps
This feature allows ServiceNow customers to associate multiple work items with a commit in various platforms, including Azure DevOps, Bitbucket, GitHub, and GitLab. By customizing commit message syntax, users can align this functionality with their organizational processes using theDevopsCommitMessageParserSNCscript include.
Show less
Key Features
- Customizable Syntax: Users can tailor the commit message formats to meet specific organizational needs. Supported formats include colon, hash, and Jira patterns.
- Extensibility: The DevopsCommitMessageParser allows users to add custom logic for additional message formats via the System Definition > Script Includes module.
- Duplicate Removal: The system automatically removes duplicate work item IDs from the final list, ensuring clarity in associations.
Key Outcomes
By effectively utilizing this functionality, customers can:
- Easily link multiple work items to a single commit, enhancing traceability and accountability.
- View associated work items directly in the DevOps Commit record and Pipeline UI, facilitating better project management.
- Customize and extend the commit message parsing capability to fit evolving project needs.
Multiple work items for a commit are supported in DevOps for Azure DevOps, Bitbucket, GitHub, and GitLab.
Work item syntax in the commit message can be customized to reflect the processes in your organization using the DevopsCommitMessageParserSNC script include in the System Definition > Script Includes module.
/**
* Supported patterns
* Colon pattern
* Sample supported formats:
* 1. STRY1,STRY2: Additional bug fixes
* 2. STRY1 , STRY2 : Additional bug fixes
* 3. STRY1, STRY2 : Additional bug fixes
* Hash pattern
* Sample supported formats:
* 1. Fixes for #STRY1, #STRY2, #STRY3
* 2. Fixes @$#3 and #1 work item
* 3. Fixes for #STRY1 #STRY2 #STRY3
* 4. Fixes for AB#123
* Jira pattern
* Sample supported formats:
* 1. JRA-123 fixed
* 2. JRA-123 JRA-234 JRA-345 resolved
*/var DevopsCommitMessageParser = Class.create();
DevopsCommitMessageParser.prototype = Object.extendsObject(DevopsCommitMessageParserSNC, {
initialize: function() {
DevopsCommitMessageParserSNC.prototype.initialize.call(this);
this._customPattern = /\[(.*?)\]/g; // The regex pattern to match the words written inside square brackets.
// Example commits message to match this custom pattern is : "[STRY1], [STRY2] Additional bug fixes"
},
getWorkitemsFromCommitMessage: function(message, branchName) {
var workitems = [];
// We first call the getWorkitemsFromCommitMessage method from the parent class to get the matching workitems ids for OOB formats
var defaultWI = DevopsCommitMessageParserSNC.prototype.getWorkitemsFromCommitMessage.call(this, message, branchName);
if (!gs.nil(defaultWI) && defaultWI.length > 0) {
workitems = workitems.concat(defaultWI);
}
// Now call your custom method that returns an array of workitem native IDs matching custom pattern
var customWI = this.getWIFromCustomPattern(message);
if (!gs.nil(customWI) && customWI.length > 0) {
workitems = workitems.concat(customWI);
}
// getUniqueWorkItems method from parent class removes duplicates from the workitems array
workitems = this.getUniqueWorkItems(workitems);
// return the final list
return workitems;
},
getWIFromCustomPattern: function(message) {
var wi = [];
var l;
var match;
var matches = message.match(this._customPattern);
if (gs.nil(matches))
return wi;
for (var i = 0; i < matches.length; i++) {
l = matches[i].length;
match = matches[i].substring(1, l - 1); // trim the brackets
wi.push(match);
}
return wi;
},
type: 'DevopsCommitMessageParser'
});Linking work items to a commit using the Azure DevOps user interface is also supported in DevOps.
You can view the list of associated work items in the DevOps Commit record, and in the Pipeline UI.