5

Wir betreiben nächtliche Builds auf einem Jenkins-Server und wir verwenden ClearCase als Source Control Management.Ist Continuous Integration mit ClearCase möglich?

Da ClearCase file-centric ist, werden die Dateien nacheinander überprüft. Im Gegensatz zu SVN oder Git (die repository-zentrisch sind), werden Änderungen von Entwicklern nicht festgeschrieben atomically.

Dies ist in der Nacht nicht problematisch, da die Entwickler nicht mehr aktiv sind und der ClearCase-Server um 1 Uhr morgens gesperrt ist.

Aber hier ist ein Beispiel dafür, was ein Grund zur Besorgnis sein könnte, wenn Entwickler für Tag aktiv sind (sagen wir, dass jede halbe Stunde laufen Builds):

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 

So sind Release-Builds (aka "ASAP Builds" oder wörtlich "Continuous Integration") mit ClearCase eine Überlegung wert oder sind wir dazu verdammt, uns für immer mit nächtlichen Builds zu begnügen?

Antwort

3

Wenn Sie UCM verwenden, können Sie auch die ClearCase UCM Plugin betrachten können, und nur einen Build auf Nachfrage auslösen, wenn eine Basislinie erstellt wird.

Auf diese Weise:

  • die Entwickler steuern, wenn eine kontinuierliche Build geeignet ist, sondern eine Basis Zugabe (und Reinigung alte falls erforderlich).
  • Jenkins kann Baselines fördern, um die Verfolgung des erfolgreichen oder fehlgeschlagenen Builds zu erleichtern.

Sie können sogar ein Skript zur Verfügung stellen für die Entwickler für die Verwendung:

  • Check-in all den aktuellen checkten Datei
  • eine Basislinie automatisch
  • gesetzt

Das wäre helfen Sie dem Benutzer, diese kontinuierliche Integration auszulösen, da er/sie entscheiden kann, wann die aktuelle Codebasis stabil genug ist, um festgeschrieben (und getestet) zu werden.


Sie noch die Idee mit der Basis Clearcase verwenden: einfach eine Verschiebung Etikett setzen Mittel auf all die Datei (Verschiebung sicher: wenn eine Datei mit einer früheren Version mit diesem Label hat, würde das Etikett sein in die LATEST-Version verschoben, die gerade vom Entwickler eingecheckt wurde.

Ihre Jenkins CC-Ansicht würde so konfiguriert werden, dass alle Dateien mit diesem Label angezeigt werden. Wenn das Label zu einer neuen Version wechselt, ändert sich die cleartool lshistory von Jenkins und ein Build wird ausgelöst. (Hinweis: Sie cannot yet do it for a pattern of label)

+0

Danke für die Antwort. Ich hätte es aufzeigen sollen; Wir verwenden kein UCM, sondern nur ClearCase. Was könnte eine Antwort ohne den Einsatz von UCM sein? –

+0

@ StéphaneBruckert Ich habe meine Antwort bearbeitet: Die Idee ist, den Build basierend auf einem Label auszulösen, nicht nur auf einer neuen eingecheckten Datei. – VonC