RTC /w Jenkins: One stream or many?
Our setup is the following (or will be shortly):
- 60 maven projects
- Each maven project has a working release plugin configuration.
- Each maven project has a separate component in RTC
- Each maven project has proper version numbers.
- A maven repository (nexus)
- Jenkins for building
- RTC for everything else
I'm using the new Team Center plugin for Jenkins.
My question is:
Should those 60 RTC components (each a maven project) be in one stream? Or should I have 60 streams, each with one component?
I ask because if I put them all in one stream then how does Jenkins know what changes to poll for? Won't it build all the components anytime a change is pushed up? Or is the new Team Center plugin smart enough to just to poll that one component?
If I have 60 RTC streams each with one component, then I have the problem I have to create 60 build definitions and workspaces. Doable, but manual as heck since this doesn't seem to be automatable.
One answer
Hi Christian,
Here is the general advice I'd give, however I'm sure there can be even more to consider than this. Everything in a stream, should be built and "released" at the same time. And I'm not just speaking specifically of maven's definition of release. If the 60 components are independent and built on different release schedules, then they should be in different streams, maybe even in different project areas. Otherwise, the component dependencies should be considered when composing your streams. When defining your streams you should also be considering your deliverables, whether the deliverables are actually product binaries, or source code that gets promoted to the next level of integration.
Here are some articles that may help,
https://jazz.net/library/article/40
https://jazz.net/library/article/599
Here is the general advice I'd give, however I'm sure there can be even more to consider than this. Everything in a stream, should be built and "released" at the same time. And I'm not just speaking specifically of maven's definition of release. If the 60 components are independent and built on different release schedules, then they should be in different streams, maybe even in different project areas. Otherwise, the component dependencies should be considered when composing your streams. When defining your streams you should also be considering your deliverables, whether the deliverables are actually product binaries, or source code that gets promoted to the next level of integration.
Here are some articles that may help,
https://jazz.net/library/article/40
https://jazz.net/library/article/599