Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Is it possible to change the content of a snapshot created by a build result during the build?

Hi,

I have a customer who is trying to change the content of snapshot created by a Build result.

The use case is that we have N component in the stream and we create some jar,war and ear packages with those components. But only 3 of those components will contain a package(ear,war,etc...). So we like to take a snapshot of those 3 components at the end the build and attach it to the actual Build Result. So whenever somebody open the build result, he/she will see only the components that have a dowloadable package.

Or which way would it be better to implement such a case? We thought about removing the uncessary components from BuildUser's workspace by using scm command in build.xml so the snapshot will only contain our desired component but didnt work.

Is it possible to do this kind of operations or not? I believe RTC wouldn't allow us to manipulate that snapshot.

0 votes



2 answers

Permanent link

As Nick commented:

but there's currently no way of associating an arbitrary snapshot with the build result in the same way as the original snapshot

We wrote an Ant task that allows one to associate a snapshot to a build result. The task works, but once we started using the task we started experiencing this temporarily missing snapshot problem. EDIT: The issue has been resolved and the code below was updated to correct the issue. In certain cases, we associate the same snapshot to more than one build result (e.g. rebuild scenarios). The first time we associate the snapshot to the build result, all works fine. But, subsequent attempts sometimes fail where the server tells us that the item is no longer available. After some time, later attempts for the same item will work. Perhaps our Ant task is putting the snapshot into a temporary bad state?

The body of the Ant task is:

IBaselineSet snapshot = getSnapshot(this.snapshotUUID, getTeamRepository(), getProgressMonitor());

addSnapshotContributionToBuild(snapshot, getBuildResult(
IBuildResult.PROPERTIES_COMPLETE), getTeamRepository(), getProgressMonitor());

The body of the Ant task uses these two methods:

private IBaselineSet getSnapshot(String snapshotUuid,         ITeamRepository teamRepository, IProgressMonitor progressMonitor)
        throws TeamRepositoryException {

    IBaselineSetHandle baselineSetHandle = (IBaselineSetHandle)
IBaselineSet.
ITEM_TYPE.createItemHandle(UUID.valueOf(snapshotUuid), null);

return (IBaselineSet) teamRepository.itemManager().fetchCompleteItem(
baselineSetHandle, IItemManager.
REFRESH, progressMonitor);
}


public void addSnapshotContributionToBuild(IBaselineSet snapshot,
IBuildResult buildResult, ITeamRepository teamRepository,
IProgressMonitor progressMonitor)
        throws TeamRepositoryException {

    IBuildResultContribution contribution =
BuildItemFactory.createBuildResultContribution();

   contribution.setExtendedContributionTypeId(
            ScmConstants.EXTENDED_DATA_TYPE_ID_BUILD_SNAPSHOT);
   contribution.setImpactsPrimaryResult(false);
   contribution.setLabel(NLS.bind(
AntMessages.
TeamAcceptTask_SNAPSHOT_CONTRIBUTION_LABEL,
snapshot.getName()));
    contribution.setExtendedContribution(snapshot);

    ITeamBuildClient buildClient = ClientFactory.getTeamBuildClient(teamRepository);

    buildClient.addBuildResultContribution(buildResult, contribution,
progressMonitor);
}



1 vote


Permanent link
Hi Canberk,

Currently JBE creates the snapshot after changes are accepted into the build workspace, but before the main phase of the build is run.  Snapshots are not mutable (except for changing their name).

You could use the SCM CLI to create a new snapshot, but there's currently no way of associating an arbitrary snapshot with the build result in the same way as the original snapshot.  You could possibly use the linkPublisher Ant task to associate a resource URL for the snapshot with the build result, which would show up on the External Links page of the build result editor.  Clicking it would open the snapshot in the snapshot editor.  The URL would have to be of the form: RTC_SERVER/resource/itemOid/com.ibm.team.scm.BaselineSet/SNAPSHOT_UUID.

0 votes

Comments

Hi Nick,

Thanks for the answer. linkpublisher is a good method. I am not that familiar with SCM command line but I know that we can give a name to the snapshot while creating it. So we have a name for the custom snapshot but I was wondering how we can get the UUID of this custom snapshot in ant so we can use linkpublisher.

Thanks in advance

 You would need to specify -u y on the command line to have it generate UUIDs in the output, then parse that out, set it as an environment variable, and then bring that in to Ant using the property Ant task.  I realize this involves a lot of duct tape and baling wire, unfortunately.  Since 4.0, the SCM CLI supports JSON output as well.  For an intro to the SCM CLI and how to use it for this kind of scripting, see https://jazz.net/library/article/1031


Hi Nick,

We have the same issue and there is still no support for it.
We are updating the build version in source files during the build and deliver it later to the stream (if build succeeded) and would like the snapshot to be applied including these version files changes, any suggestions?
since build snapshot can't be controlled when to be applied, and new snapshot can't be associated with the build result (and replace the original snapshot), i am out of ideas.
Thanks
Rachel

Hi Rachel, the situation hasn't changed. The only recourse for now is to use the SCM CLI to create a new snapshot, and publish a link to it as a regular link contribution, as suggested above.

Your answer

Register or log in to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 12,019
× 562
× 113

Question asked: Sep 17 '12, 4:10 p.m.

Question was seen: 6,714 times

Last updated: Feb 10 '14, 1:06 p.m.

Confirmation Cancel Confirm