Wir wissen, das ist gut zu haben, aber ich finde es gerecht zu meinem Arbeitgeber. Bitte erläutern Sie, warum ein Entwicklungsteam einen Build-Server benötigt.Warum sollte mein Entwicklungsteam einen Build-Server haben?
Antwort
Es gibt mehrere Gründe, Build-Server zu verwenden. In keiner bestimmten Reihenfolge und aus der Spitze meines Kopfes:
Sie vereinfachen den Workflow der Entwickler und reduzieren die Wahrscheinlichkeit von Fehlern. Der Build-Server kann mehrere Schritte ausführen, z. B. das Auschecken des neuesten Codes, die Installation der erforderlichen Software usw. Es besteht keine Möglichkeit, dass ein Entwickler einige DLLs auf seinem Computer installiert, die den Build scheinbar zufällig passieren lassen.
Ihr Build-Server kann Ihre Zielumgebung (Betriebssystem usw.) replizieren, und es gibt weniger Möglichkeiten, dass etwas auf den Desktops der Entwickler funktioniert und die Produktion unterbrochen wird.
Während es eine gute Übung für Entwickler ist, alles zu testen, was sie einchecken, manchmal tun sie es einfach nicht. Dann ist es gut, den Build-Server dort zu haben, um Testfehler zu erfassen und das Team wissen zu lassen, dass das Produkt defekt ist.
Zentralisierte Builds bieten einfachen Zugriff auf Code-Metriken - welche Tests bestanden, welche fehlgeschlagen sind, wie oft, wie gut ist Ihr Code durch Ihre Tests abgedeckt usw. Ein fundiertes Verständnis des Qualitätsstatus der Codebasis reduziert die Wartung und Testen von Kosten durch rechtzeitige Rückmeldung, die es ermöglicht, Fehler schnell und einfach zu beheben.
Die Produktbereitstellung ist vereinfacht - Entwickler oder QA müssen sich nicht mehrere manuelle Schritte merken. Es kann leicht automatisiert werden.
Die Verbindung zwischen Entwicklern und QA ist vereinfacht. QA-Mitarbeiter können sich an einen bekannten Ort begeben, um sich die neuesten Versionen von Versionen zu beschaffen.
Es ist einfach, Builds für Release Branches einzurichten, die ein zusätzliches Sicherheitsnetz für Produkte in ihrer Release-Phase bieten, wenn Codeänderungen mit besonderer Sorgfalt vorgenommen werden müssen.
Um das Problem "aber es funktioniert auf meiner Box" zu vermeiden.
Haben Sie eine konsistente, bekannte Umgebung, in der die Software erstellt wird, um Abhängigkeiten von lokalen Dev-Boxen zu vermeiden.
Sie können einen virtuellen Server verwenden, um (viel) zusätzliche Kosten zu vermeiden, wenn Sie dies benötigen.
ASAP-Wissen darüber, welche Unit-Tests derzeit funktionieren und welche nicht; Darüber hinaus wissen Sie auch, ob ein einmaliges Bestehen von Testeinheiten fehlschlägt.
Dies sollte zusammenzufassen, warum es wichtig ist, einen Build-Server haben:
http://www.codinghorror.com/blog/2006/10/the-build-server-your-projects-heart-monitor.html
+1 - Gute Verbindung. Ich denke, das spricht die Frage gut an. –
Es ist eine kontinuierliche Qualitätsprüfung Armaturenbrett; Es zeigt Ihnen Statistiken über die Qualität Ihrer Software und zeigt sie Ihnen jetzt. (JUnit, Cobertura)
Es stellt sicher, dass Entwickler nicht durch andere Entwickler behindert werden, die den Build brechen, und ermutigt Entwickler, besseren Code zu schreiben. (FindBugs, PMD)
Sie sparen Zeit und Geld das ganze Jahr über, indem Sie beim ersten Mal besseren Code von Entwicklern erhalten - weniger Geld beim Testen und erneuten Testen - und mehr Code von denselben Entwicklern bekommen, weil sie weniger sind wahrscheinlich, sich gegenseitig zu stolpern.
Zwei Hauptgründe dafür, dass nicht-technische Menschen beziehen können:
Es die Produktivität der Entwickler-Team verbessert, weil Probleme früher erkannt werden.
Es macht den Zustand des Projekts sehr offensichtlich. Ich habe meinem Management das Build Status Dashboard gezeigt und jetzt sehen sie es sich ständig an.
Eine weitere Sache. So etwas wie Hudson ist sehr einfach einzurichten - du solltest es vielleicht einfach eine Weile in einer Ecke laufen lassen und es später zeigen.
Das ist mein Hauptargument:
- alle offizielle veröffentlicht muss in einer kontrollierten Umgebung bauen werden. Keine Ausnahmen.
einfach weil man nie weiß, wie die Entwickler ihre persönlichen Releases erstellen.
Sie müssen auch nicht über Build Server wie in "Klinge, die einen Arm ein Bein kostet" sprechen. Der erste Build-Server, den ich eingerichtet habe, war ein Desktop-Computer, der unplugged in einer Ecke saß. Es hat uns sehr gut für mehr als 3 Jahre gedient.
Eine Sie haben Ihre Build-Maschine, können Sie beginnen, einige Funktionen hinzufügen (Hudson ist großartig) und implementieren Sie alles, was die anderen Plakate erwähnt.
Sobald Ihre Maschine zu bauen, um Ihre Organisation unverzichtbar wird (und jeder sieht seine Vorteile), Sie in der Lage sein wird, ein glänzendes neues Messer zu fragen, ob Sie :-)
wünschenDie einfachste, was man tun kann, zu überzeugen, Ihr Arbeitgeber, um einen Build-Server zu haben, ist ihnen zu sagen, dass sie schneller freigeben können und mit bessere Qualität.
Schnellere Versionen kommen aus der unmittelbaren Rückmeldung über die Qualität des Builds. Wenn jemand den Build bricht, kann er oder sie den fehlerhaften Build sofort reparieren, wodurch eine Verzögerung des Build- und Release-Zeitplans vermieden wird. Ohne einen Build-Server muss das Team Zeit damit verbringen, herauszufinden, was und wann passiert ist und wie es behoben werden kann.
Bessere Qualität wird erreicht, indem der Build-Server Bug-Erkennungs-Tools automatisch jedes Mal startet, wenn jemand die Änderungen in ein Versionskontrollsystem ändert. Sie erwähnen nicht, was die Hauptentwicklungssprache in Ihrer Organisation ist, aber solche Werkzeuge, fortgeschritten, aber kommerziell und einfach, aber frei, existieren praktisch für alle Sprachen. Lint, FxCop, FindBugs und PMD kommen in den Sinn.
Sie können auch diese presentation on benefits of continuous integration für eine ausführlichere Diskussion überprüfen.
Vielen Dank für die tollen Antworten Jungs, hier ist eine Wendung auf die ursprüngliche Frage. Mein Arbeitgeber ist ok mit einer Maschine CI-Aufgaben zu erledigen. Meine Herausforderung besteht nun darin zu begründen, warum diese Maschine unabhängig sein sollte. Ich benutze einen Server, den das ganze Unternehmen zum Testen benutzt, was bedeutet, dass jeder damit herumhantiert. Mein Argument ist, dass wir eine kontrollierte Umgebung brauchen (genau wie Vladimir darauf hingewiesen hat). Was sind deine Gedanken? und Bevorzugen Sie eine VM oder eine dedizierte Maschine? –
@H. Abraham Chavez: Das ist eine andere Frage. Du solltest es als neue Frage stellen, nicht hier in einem Kommentar. –