Wie ein Build (Java) als „CM-unabhängig“ wie möglich zu machen? (CM = Configuration Manager)

StackOverflow https://stackoverflow.com/questions/486668

Frage

Ich habe von sich um ein Projekt zu denken baut ich handhaben, als „unabhängig“ von mir (CM), wie ich nur kann. Damit Dont meine ich nur die Automatisierung über Skripte / Tools - obwohl sie es auf jeden Fall beinhaltet. Dies ist ein Projekt unterliegt viel Chaos und so „total“ Automatisierung wäre nicht realistisch sein.

Hier ist, was ich bin mit dem Ziel für:

Jeder sollte in der Lage sein, den Build zu tun (mit etwas Automatisierung und einem wenig Dokumentation / Richtlinien) - zum Beispiel -. Neuling CM oder sogar ein Entwickler ohne CM Erfahrung

Meine ersten Gedanken sind diese durch erreichen:

  1. Nageln des Buildanforderungsprozess (über Build-Formen, die Erfassung aller Details für den Build erforderlich, so dass nichts die Risse nach unten fällt, nur weil seine in jemandes Kopf)

  2. die Build-Schritte Vereinfachen, so dass sie in einer einfachen Dokumentation als Folge von Befehlen erfaßt werden können - ein ausgebildeter Affe sollte mit dem Aufbau (gut .. nicht schleudern Beleidigungen aber in der Lage zu laufen - Sie bekommen die Idee :-))

  3. die Funktionen des Werkzeugs verwenden, um den Griff (lesen ANT, SVN), so dass die möglichen Probleme im Voraus aufgefangen werden und auch dazu beitragen, eine bessere Warnungen bei Störungen / Probleme geben.

  4. Mit der Freiheit krank werden oder diesen gelegentlichen Urlaub ohne die Projektmanager immer Panikattacken nimmt jedes Mal erwähne ich ein paar Tage ab. :-)

Ich würde mich freuen, einige Gedanken und Ideen zu haben, mir in dieser Richtung zu helfen. Dank alle!

War es hilfreich?

Lösung

Urbancode verweisen wir auf diese als "Bob der Baumeister" anti-Muster. Die gute Nachricht ist, dass Bob (Sie) will aus der Schleife erhalten. Wenn der Build-Typ nicht auf Urlaub gehen oder ohne Teile des Prozesses ins Stocken krank wird, ist es wirklich ein unannehmbares Problem. Wenn ich ein Wett Mann, wie Sie den Prozess der Vereinfachung des Prozesses nach unten zu „dressierten Affen“ Ebenen beginnen, werden Sie sich fragen, warum Sie Ihre Zeit, dies zu tun rote Sachen zu verbringen, wenn Sie klug sind und tatsächlich könnte das Hinzufügen Wert irgendwo.

Die Symptome von "Bob der Baumeister" -Syndrom in unserem Buch:

  1. Alle Anträge auf bauen, oder bauen einen bestimmten Typen, geht durch eine Einzelperson oder kleines Team.
  2. Reaktion auf diese Anforderungen bauen ist nervend langsam für Entwickler. Wenn das Build-Team beim Mittagessen ist, warten sie Stunden.
  3. Bob, oder das Team von Bob, einen erheblichen Anteil ihrer Zeit tut rote Aufgaben verbringen.
  4. Die Bobs nach Hause für den Tag gehen, zum Mittagessen gehen, gehen im Urlaub oder krank impede die Fähigkeit des Teams um Dinge zu erledigen.

Wir sagen unseren AnthillPro Kunden alle diese Art von Sachen in ihre Automatisierung zu schieben. zwei Build-Typen zu haben, die verschiedenen Maschinen verwenden, verschiedene Build-Nummern, etc. sollte kein Problem sein.

Der erste Schritt ist zu verdummen der Prozess. Fahren Sie so viel Komplexität wie möglich, so dass Sie bis auf den „dressierten Affen“ Prozess zu bekommen. Wenn Sie so etwas wie das haben, ersetzt der Affe mit einem Computer ist recht einfach.

Ich würde geben spezifischere Ratschläge, aber ich glaube nicht, dass Sie uns erzählt haben, wo die Komplexität kommt, anders als Chaos. Manchmal in dieser Situation müssen Sie Praktiken chaotisch und schlecht attackieren. Sind Sie baut dabei, dass es „Diese Basislinie im Quellcode und die beiden Dateien und diese drei Dateien?“ Das wäre kompliziert und wahrscheinlich eine CMER in der Schleife muß. Finden Sie einen Weg, es zu verbieten. Austausche, dass mit „einem Zweig erstellen, und stellen spezifische Änderungen an diesen Zweig“ macht den Build machbar durch diesen Affen zu konstruieren.

Es sollte möglich sein, für diese Änderungen als hohe Risiko zu argumentieren. Auch wenn Sie gut sind, werden Sie haben schlechte Tage und menschliche Fehler aus der Gleichung so viel wie möglich zu nehmen. Zur gleichen Zeit, wenn Sie schießen für eine schnellere Reaktion auf die Entwickler und Self-Service (die vermutlich Entwicklung und Management wollen) einige Dinge müssen automatisierbar / monkeyable gemacht werden.

Mit besseren Formen in der Zwischenzeit gut sein können, und Ihre Werkzeuge gut verwendet, ist immer gut, aber ich würde ziemlich aggressiv das „dressierten Affen“ Problem angreifen. Alles, was von einem ausgebildeten Affen nicht (oder einem Computer) durchgeführt werden kann, sollte ein Kandidat für das Verlassen des Prozesses sein. Sobald Sie es auf „dressierten Affen“ Status nach unten, erhalten Sie Ihre Build-Automatisierung an Ort und Stelle so weder Sie noch die Entwickler brauchen Affen zu sein. Das ändert sich Ihre Rolle von "Bob der Baumeister" zu "Bob das Build-System Owner".

Andere Tipps

  

Die Vereinfachung der Build-Schritte, so dass sie in einer einfachen Dokumentation als Folge von Befehlen erfasst werden können - ein ausgebildeter Affe sollte mit dem Build laufen können (naja .. nicht schleudern Beleidigungen aber - man bekommt die Idee :-) )

Wenn das möglich ist, als es möglich sein sollte, den Bau in einem Schritt über einen Skript ausgeführt werden soll (mayy es eine Ameise, bash sein, Maven oder was auch immer Skript). Das sollte das Ziel sein, so dass im Grunde jeder kann die Build tun.

Das Ziel, einen Build-Prozess zu entwickeln sollte sein:

  1. Starten Sie mit einem leeren Verzeichnis überall (tabula rasa, wenn man so will)
  2. Stellen Sie sicher, eine sehr kleine Werkzeuge von grundlegenden Werkzeuge intalled (für mich, das ist in der Regel Java + Maven + SVN Kommandozeilen-Client)
  3. Schauen Sie sich ein Single Verzeichnis aus dem SVN / CVS /...
  4. Starten Sie mit einem einzigen Befehl (und das heißt etwas, das nicht mehr als 25 Parameter hat)
  5. Warten (möglicherweise eine ganze Weile)
  6. Haben Sie Ihren kompletten Build

Wenn Sie das nicht können, dann wird Ihr Build-Prozess ist immer noch nicht genug gut.

Wenn Sie denken, dass Sie es nicht erreichen können, dann beschreiben im Detail, welche Maßnahmen Sie benötigen zusätzlich zu dieser Liste zu tun, sind nicht möglich, durch eine Turing-Maschine komplett zu tun.

In der Regel ist es nicht so ein Punkt. Es ist nur die fehlenden Werkzeuge / Know-how / Motivation. Ich persönlich fand heraus, dass es einfacher ist, dies zu tun, als zu beschreiben, warum es nicht getan werden kann.

Viel Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top