It's all about the answers!

Ask a question

Need advice for design of Stream/Workspace for project


John Czukkermann (3655) | asked Feb 15 '12, 9:45 p.m.
Greetings,

The product I work on has a core and several exploiters that are developed and shipped separately, although together, they are installed to make a single release.

I'm looking into moving my team (the one working on the core) off of CMVC and into RTC. Our current needs are to provide support for a currently available release and for two prior releases. At the same time we are actively working on the current (to be the next) release. Currently, we have yet another release in which a specific set of support is being developed and tested "out of band", that will eventually be rolled back to the N-1 release and forward into the current release.

At the end of each iteration, core produces a driver (our rally point driver) that is combined with the other exploiter end of iteration drivers to deliver the complete rally point driver for our product.

I want us to adopt a continuous integration/build approach and am struggling with the best way to set this up. The core component currently consists of 20 RAD projects. I'm thinking that a single RTC component is appropriate for the core. Each of the exploiter development teams, I think, should each have their own RTC component eventually.

I was considering, for each release we are currently developing or supporting, the following approach.

1) Define the release integration stream to which developers deliver build-correct changes.
2) Define a release integration workspace that has the stream from 1) as its flow target.
3) I create a build definition that checks the release integration workspace for changes every minute and if changes are present, kicks off a build that accepts all the pending changes.
4) Define a continuous integration driver workspace in which snapshots of successful builds from 3 are created.

5) Then I create Rally Point Integration stream (or should it be a stream and if so, why) that has the release integration stream from 1 as its flow target. It's here that we accept the changesets/work items to be included in the next driver to be included in the product rally point driver.
6) Create a Rally Point Integration workspace that has the stream from 5 as its flow target.
7) Have another build definition setup used to build the driver from the Rally Point Integration workspace in 6, accepting all pending changes that were driven down via item 5.
8) Create a Rally Point Build workspace to which the successful rally build snapshot will be posted.

Rinse wash and repeat for each release.

There are times when a piece of work in the release being developed needs to be rolled back to the N-1 release that is currently in service. Similarly, there are times when a defect fix in the N-1 or N-2 release needs to be rolled up into the release in development. How does one do this in RTC. Does each release need to have the code in question manually developed or can the change sets somehow be flowed to other releases. Perhaps by having the continuous integration streams (item 1) for each release have each other as flow targets? Then change sets that don't apply in one release could simply be ignored and integrated into the other intended releases.

Thanks for sticking with me in the rather lengthy post.
John Czukkermann

4 answers



permanent link
John Czukkermann (3655) | answered Feb 22 '12, 6:35 a.m.
Bump

permanent link
Ralph Schoon (63.1k33646) | answered Feb 22 '12, 6:56 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
John,

the question is just too complex to simply answer it. I think you should get started with something that makes sense and go from there, improving over time as you go. Below my thoughts.

In general I would suggest to read

https://jazz.net/library/article/649
https://jazz.net/library/article/599
http://www.ibm.com/developerworks/rational/library/parallel-development-rational-team-concert/index.html?ca=drs-
https://jazz.net/library/presentation/750

I would split the projects into components with a certain architectural pattern, such as layers, if possible.

I would try one or potentially more components for the other content. It might make sense to have components for the build related data for example.

I would set up streams for each release and potentially have maintenance/development streams.

I would try to have one or more development streams for the active development and have some people bring over the agreed upon code to the integration stream.

permanent link
John Czukkermann (3655) | answered Feb 22 '12, 9:08 a.m.
John,

the question is just too complex to simply answer it. I think you should ...

Thank you very much Ralph. In my searching through the Library, I had not yet come across these articles. I find the Library a bit difficult to locate the information I seek, especially helpful articles such as those you have pointed out. There is no categorization that is evident to me.

In my experimentation though, I found myself naturally setting up a continuous integration environment similar to what the first article you posted describes.

Private development workspaces that have the CI stream as the flow target. Developers do personal builds to help ensure the CI build isn't broken. When the personal build works, it's ok to deliver changes to the CI stream.

I created a CI Builds workspace and a build definition that checks for changes in the CI stream every minute. If changes are present, accept them all and initiate a build. If the build is green (we'll accept warnings, just not errors), cut a snapshot of all components in the CI Stream to the CI Builds workspace.

Thanks for your reply.
John

permanent link
Ralph Schoon (63.1k33646) | answered Feb 22 '12, 9:20 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Hi John,

that sounds reasonable. A special integration stream provides more control, but is not really needed. If you have too many teams working I guess it would make sense to get a bit more isolation.

The Library: I have two strategies really to locate all that data....

1. There is a search field. If someone asks for streams I type stream and then scroll the result.
Alternatively: You can also hit the tag on the right for example "source control" in this case.

I try to keep up a bit with the articles, but got behind recently. If i can keep up, I know there was something.

The second strategy is <your> keywords from question site:jazz.net

Typically the first 3 or the first page gets some hit that has relevance.

There is a new search functionality that gets kicked off if you use the top right search window. I have not enough experience with it yet.

I also often search the forums and have had good success in the past, although I typically find too many hits.

Your answer


Register or 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.