Frage

Joel scheint denken sehr von täglichen Builds. Für eine traditionelle kompilierte Anwendung kann ich sicherlich seine Berechtigung, aber wie funktioniert diese parallel über Web-Entwicklung - oder tut es nicht

Ein bisschen über das Projekt für ich frage - Es gibt zwei Entwickler auf einer Django (Python) Web-App zu arbeiten. Wir haben 1 SVN-Repository. Jeder Entwickler unterhält eine Kasse und thier eigene Kopie von MySQL lokal ausgeführt wird (wenn Sie mit Django nicht vertraut sind, es kommt gebündelt mit einem eigenen Testserver, sehr die Art und Weise ASP-Anwendungen können innerhalb von Visual Studio ausgeführt wird). Entwicklung und Erprobung werden lokal getan, dann verpflichtet, zurück in das Repository. Die tatsächliche Arbeitskopie der Website ist ein SVN checkout (Ich weiß, über SVN Export und es dauert zu lange). Die nächstgelegene wir zu einem ‚bauen‘ haben, ist eine Batchdatei, die ein SVN-Update auf dem Arbeitskopie läuft, wird die django Bits ( ‚manage.py syncdb‘), aktualisiert die Suchmaschine Cache (solr), dann Apache neu gestartet.

ich denke, was ich sehe nicht, die parallel zu Web-Anwendungen ist.

Machst du eine Quelle gesteuert Web-App mit ‚Nightly Builds‘ - wenn ja, was das bedeutet aussehen

?
War es hilfreich?

Lösung

Sie können ganz einfach alle Ihre Django Unit-Tests durch den Django-Test-Framework als Nightly Build ausgeführt werden.

Das ist, was wir tun.

Wir haben auch einige gewöhnliche Unit-Tests haben, die Django-Features nicht nutzen, und wir laufen diejenigen, auch.

Auch wenn Python (und Django) erfordern nicht die Art von nächtlichem Compile / link / Unit-Test, dass kompilierten Sprachen tun, werden Sie noch von der täglichen Disziplin profitieren von „Do das Build nicht brechen“. Und ein täglicher Zyklus der Einheit alles testen Sie besitzen eine gute Sache ist.

Wir sind in den Wirren der Blick auf Python 2.6 (was für uns perfekt funktioniert) und unsere Unit-Tests mit der -3 Option laufen, um zu sehen, welche Funktionen veraltet wir verwenden. eine vollständige Suite von Unit-Tests Mit versichert uns, dass eine Änderung für Python 3-Kompatibilität wird die Build nicht brechen. Und sie jede Nacht laufen bedeutet, dass wir sicher sein, wir Refactoring richtig.

Andere Tipps

Continuous Integration ist nützlich, wenn man die richtigen Prozesse um ihn herum haben. Teamcity von JetBrains ist ein guter Ausgangspunkt, wenn Sie Vertrautheit aufbauen wollen:

http://www.jetbrains.com/teamcity/index.html

Es gibt einen großen Artikel, die hier direkt an Django bezieht:

http://www.ajaxline.com/continuous-integration-in -django-Projekt

Hope this erhält Sie begonnen haben.

Web-Anwendungen in dynamischen Sprachen gebaut wurden, dürfen keine „Compilation“ Schritt erfordern, aber es kann immer noch eine Reihe von „Build“ Schritte immer die App laufen beteiligt sein. Ihre Build-Skripte können installieren oder Abhängigkeiten aktualisieren, Datenbankmigrationen durchführen und dann die Testsuite ausgeführt werden, um sicherzustellen, dass der Code „sauber“ ist w.r.t. die tatsächliche eingecheckten Version im Repository. Oder Sie können eine Kopie des Codes auf einen Testserver implementieren, führen Sie dann eine Reihe von Selenium Integrationstests gegen die neue Version, dass der Kern Site-Funktionalität, um sicherzustellen, noch funktioniert.

Es kann helfen, etwas zu lesen über das Thema Continuous Integration zu tun, das ist eine sehr nützliche Praxis für Webapp Entwickler-Teams. Je mehr schnelllebige und Ihren Entwicklungsprozess agil, desto mehr müssen Sie regelmäßig eine Eingabe von automatisierten Testen und Qualitätsmetriken sicherzustellen, dass Sie nicht schnell und laut auf jeder gebrochenen Version des Codes.

Wenn es wirklich nur Sie und ein anderer Entwickler daran zu arbeiten, Nightly Builds sind wahrscheinlich nicht, dass Sie viel los zu geben.

Ich würde sagen, dass die Web-App-Äquivalent von nächtlichen würde Builds Websites inszenieren (die nächtliche gebaut werden kann).

Wo jede Nacht zu einem Staging-Bereich baut beginnt reale Dividenden, wenn Sie Kunden, Projektmanager haben und QA Menschen, die ein auf dem neuesten Stand der Lage sein müssen, um zu sehen, aber relativ stabile Version der App. Ihr Entwickler Sandkästen (wenn Sie wie ich sind, zumindest) wahrscheinlich eine Menge Zeit in einem unbrauchbaren Zustand verbringen, wie Sie brechen Dinge versuchen, das nächste Feature implementiert zu bekommen. Also das typische Problem ist, dass eine QA Person überprüfen will, dass ein Fehler behoben ist, oder eine Uhr will prüfen, ob einige geplante Funktion korrekt implementiert wurde, oder ein Kunde will, um zu sehen, dass Sie Fortschritte in der Frage gemacht haben, dass sie sich interessieren Über. Wenn sie nur Zugriff auf Entwickler Sandkästen haben, gibt es eine gute Chance, dass, wenn sie zu umgehen, um es zu suchen, entweder die Sandbox-Version läuft nicht (da es ./manage.py runserver bedeutet, irgendwo in einem Terminal ist nach oben) oder es ist in einem gebrochenen Zustand sonst wegen etwas. Das verlangsamt wirklich auf das ganze Team und verschwendet viel Zeit.

Es klingt wie Sie Ihnen keine Staging-Setup haben, da nur automatisch die Produktionsversion aktualisieren. Das könnte in Ordnung sein, wenn Sie Weg vorsichtiger und disziplinierter als ich (und ich denke, die meisten Entwickler) ist und nie etwas begehen, die nicht völlig kugelsicher ist. Persönlich würde ich eher dafür sorgen, dass meine Arbeit sie durch zumindest einige oberflächliche QA von jemand anderem als mir gemacht hat, bevor er die Produktion trifft.

So, zum Schluss, das Setup, wo ich arbeite:

  • jeder Entwickler läuft ihre eigene Sandbox lokal (das gleiche wie Sie es tun)
  • gibt es eine „gemeinsame“ Staging-Sandbox auf einem Entwickler-Server, der jede Nacht von einem Cronjob aktualisiert wird. PMs, Kunden und QA dorthin gehen. Sie werden nie einen direkten Zugang zum Entwickler Sandkästen gegeben.
  • Es gibt eine automatisierte (wenn auch manuell ausgelöst) Bereitstellung zur Produktion. Ein Entwickler oder die PM kann „Push“ zu Produktion, wenn wir die Dinge fühlen ausreichend QA'd worden und ist stabil und sicher.

Ich würde sagen, der einzige Nachteil (neben ein wenig zusätzlichen Aufwand Einstellen der nächtlichen Inszenierung aufbaut) ist, dass es für einen Tag der Turnaround auf Fehler Überprüfung macht. dh, berichtet QA einen Fehler in der Software (basierend auf dem an diesem Tag Nightly Build suchen), Entwickler behebt Fehler und verpflichtet, muss QA bis den Build wartet am nächsten Tag zu überprüfen, ob der Fehler tatsächlich fixiert ist. Es ist in der Regel nicht so viel von einem Problem, da jeder genug Sachen passiert hat, dass es nicht den Zeitplan nicht beeinträchtigt. Wenn ein Meilenstein obwohl naht und wir sind in einer Feature-gefroren, Bugfix nur Modus, werden wir häufiger manuelle Aktualisierungen der Staging-Website tun.

mit Hudson für kontinuierliche Integration

Ich habe großen Erfolg gehabt. Informationen zur Verwendung von Hudson mit Python von Redsolo .

Vor ein paar Monaten, mehrere Artikel espousing kontinuierliche Bereitstellung für Aufsehen gesorgt online. IMVU hat Details, wie sie a href = "http <: //timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/“rel = "nofollow noreferrer"> Einsatz von bis zu 5-mal Tag .

Die ganze Idee hinter häufigem baut (nächtlicher oder häufiger wie in kontinuierlicher Integration) ist ein unmittelbare Rückmeldung zu erhalten, um die verstrichene Zeit zwischen der Einführung eines Problems und seiner Erkennung zu reduzieren. So Gebäude häufig sind nur sinnvoll, wenn Sie in der Lage sind, ein Feedback über die Zusammenstellung zu erzeugen, (idealerweise automatisierte) Tests, Qualitätskontrolle usw. Ohne Feedback gibt es keinen wirklichen Sinn.

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