We have a good UCM Clearcase system. We have proper nightly builds on the integration stream and I have configured CruiseControl.NET for various sites.
The issue is that in case of build failures, no baseline is applied. This forces developers to fix the issues on the build server itself.
This is highly undesirable. I want to apply a baseline and make it *REJECT*ed. Then ask the developer to fix issues by rebasing against the REJECTed baseline.
How should I do that in the following stream configuration:
MainStream
|
|---Germany_Stream
|
/ \
Multiple developer streams
|
|---USA_Stream
|
/ \
Multiple developer streams
The developers deliver changesets to their sites. That is German devs to German stream and US devs to US stream.
These changes are then pushed to the MainStream. The nightly build happens there. A baseline should be applied at the MainStream and recommended in case the build passes. If it fails the baseline needs to be applied and *REJECT*ed. How do I make the *REJECT*ed baseline available to the developers who are two levels below the MainStream?
Please let me know how I can make developers follow best practices and stop them from making changes in the build server.
If you are thinking rebase, you would need to rebase on site stream (USA or Germany), then rebase dev streams.
That can be a good approach as each stream can choose to rebase (pull approach) from the site stream to their dev stream.
The only issue is that it requires a merge in a stream (USA or Germany) which is also used by devs for delivery: conflicts might happen.
I would recommend making a substream to Main, called
Rejected_Stream, which can be rebased at will (and will get the latestREJECTbaseline).From there, any dev can choose to initiate a deliver from that stream to their own dev stream.
The problem with this approach is that each deliver would have to be made sequentially.