RTC Plain Java API - Find BuildResult id based on ChangeSet id or WorkItem id
I'm using the RTC's Plain Java API.
In my program, I have a list of WorkItems and their associated ChangeSets.
I need to check if each ChangeSet was successfully built.
Each ChangeSet can be found in multiple BuildResults.
Is there a way to query for the associated BuildResults (and retrieve their ids) based on WorkItem Id or (preferably) ChangeSet Id?
In the web version of RTC, I can view "Included in Builds" for each work Item. How can I grab that list using the Plain Java API?
Accepted answer
The Included in builds is just another link type. See https://rsjazz.wordpress.com/2012/09/19/the-rtc-workitem-link-api-linking-workitems-to-other-elements/ for the link API. https://rsjazz.wordpress.com/2017/03/29/the-work-item-command-line-is-now-open-source/ also has examples for how to use link aPI.
Comments
Hi Ralph,
How can I grab the links attached to a BuildResult?
I'm not able to use
// get all references from the work item workingcopy IWorkItemReferences references = workingCopy.getReferences();
or
IWorkItemCommon common= (IWorkItemCommon) ((ITeamRepository)workItem.getOrigin()).getClientLibrary(IWorkItemCommon.class); IWorkItemReferences references = common.resolveWorkItemReferences(workItem, null);
because..
IItem buildResultWorkingCopy = buildResult.getWorkingCopy();
and
(buildResultWorkingCopy instanceof IWorkItem) returns false.
I need to be able to grab the URI References to corresponding Jenkins build.
I also need to be able to grab the WorkItem References to the ChangeSets found in the BuildResult
Please look into the last link I posted in my answer, download and look at the code.
Please note that the IBuildResultContributions only contain URLs that are stored in the build result. The work items and change sets that you see in the build result editor for a build result of public builds are calculated using the SCM snapshot/baseline.