We are running nightly builds on a Jenkins server and we use ClearCase as a Source Control Management.
Since ClearCase is file-centric, files checkin operate one by one. Contrary to SVN or Git (which are repository-centric), modifications by developers are not committed atomically.
This is not problematic during the night, because developers are not active anymore and the ClearCase server has a lock at 1 AM.
But here is an example of what could be a cause of concern when developers are active by day (let's say that builds run every half an hour):
10:55 AM - Developer1 checks in element1
10:55 AM - Developer1 checks in element2
10:56 AM - Developer1 checks in element3
11:00 AM - ### Jenkins runs BUILD #1 ### <-- succeeds
11:29 AM - Developer2 checks in element1
11:29 AM - Developer2 checks in element2
11:30 AM - ### Jenkins runs BUILD #2 ### <-- fails (element3 is missing)
11:29 AM - Developer2 checks in element3
Thus, are Release Builds (aka "ASAP Builds" or literally "Continuous Integration") worth considering with ClearCase or are we condemned to content ourselves with nightly builds forever?
If you are using UCM, you can also consider the ClearCase UCM Plugin, and only trigger a build on demand, when a baseline is created.
That way:
You can even provide a script for the developer to use for:
That would help the user trigger that continuous integration, since he/she can decide when the current code base is stable enough to be committed (and tested).
You can still use that idea with base ClearCase: simply make sure to put a shifting label on all the file (shifting means: if a file has a previous version with that label, the label would be moved to the LATEST version just checked-in by the developer).
Your Jenkins CC view would be configured to display all files with that label, which means if said label moves to a new version, the cleartool lshistory
done by Jenkins will change, and a build will be triggered.
(Note: you cannot yet do it for a pattern of label)
There is a clearcase plugin https://wiki.jenkins-ci.org/display/JENKINS/ClearCase+Plugin It looks a bit complex to implement but has recent updates.
On the other hand, you could bridge to git/svn How to bridge git to ClearCase?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With