Frage

Ich bin auf der Suche neu zu organisieren, um die Art, wie wir unsere interne Software freigeben. Alle Code (PHP Webapps, einige Java-Anwendungen und Perl-Skripte) in Subversion-Repositorys überprüft, aber es gibt keine Zweige oder Tags, alles in Stamm (nur ca. 1-3 Devs pro app) geprüft. Auf den Produktions Linux-Servern wird die Software nur direkt von einem Arbeits svn copy läuft (eigentlich die meisten Änderungen dort passieren auch).

Da wir viele kleine Anwendungen haben und lassen sehr oft kleine Änderungen in das laufende System, ich bin für eine sehr schlanke oder transparente Art und Weise einige Release-Engineering zu tun und dieses Chaos abit aufzuräumen.

Gibt es irgendwelche Werkzeuge gibt, die mir helfen kann so in einer heterogenen Umgebung zu tun (spricht weise) wie das? Oder hat jemand eine Idee, wie diese in der richtigen Weise zu tun?

Ansonsten hatte ich dachte an einige Release (Shell) Skripte zu schreiben, die automatisch Subversion-Tags aus Stamm erstellen und führen Sie dann eine Kasse des entsprechenden Tag an den Produktionsservern. Aber das klingt irgendwie auch mir hack'ish.

Danke,

Haes.

War es hilfreich?

Lösung

Continuous Integration ist definitiv der Weg zu gehen - jeder CI (auch minimalistisch Batch-Dateien) ist besser als gar keiner - aber es wird nur so gut sein wie die Richtlinien, die Sie an der richtigen Stelle. Da die Dateien nicht wirklich als ‚binären‘ am Ende oder ‚verteilbar‘, erfordert möglicherweise Release-Kennzeichnung lediglich nur, dass Sie das Repository markieren, oder auch nur die Subversion-Revisionsnummer irgendwo verstauen. Die wichtige Richtlinie, die Sie brauchen, ist, dass jede Veröffentlichung rekonstruiert werden kann, wann immer Sie sie brauchen - damit Sie aktuelle und frühere Versionen vergleichen können, oder auf eine ältere Version zurückgehen, wenn etwas schief geht. Sorgen Sie sich nicht um die ‚Overhead‘ von Tags in SVN zu schaffen -. das ist sehr effizient

Ein Release-Skript, das den Subversion-Tag tut klingt gut. Eine CI-Implementierung (würde ich CruiseControl- empfehlen, da es für heterogene Arbeit ideal ist, obwohl Heterogenität etwas mehr Konfigurationsaufwand erfordert) ist groß, da Sie automatisch den Prozess aus auf einem Subversion checkin treten können, und automatisierte Tests durchführen, die bestimmen, ob es gut ist genug oder nicht zu kennzeichnen.

Ich würde auf jeden Fall nicht auto-Implementierung auf einen Release-Server. A 'Staging-Bereich' (nennen wir es 'Nightly Build', 'Beta-Test', was auch immer) wäre besser. Lassen Sie Ihre Benutzer an, dass Knall weg, bevor Sie gut genug, um es entscheiden, auf den Produktionsservern ausrollen. Und, solange Sie die Politik anstelle der in der Lage habe zu einer früheren Version rückgängig zu machen, haben Sie die Möglichkeit eines schlechten Roll-out gemildert haben.

Die Auto-Kasse auf Produktionsservern ist der einzige ‚hackish‘ Teil - eine automatisierte Prüfung, Test, Tag, Beta deploy glatt genug ist. Ausrollen der Produktion soll nicht eine einfache Taste hat, though.

Andere Tipps

Verwenden Sie Tags und Zweige; macht es zu einem Teil des Entwicklungszyklus. Wenn Sie aktualisieren, dass „stable-1.0“ Zweig, die Änderung getestet (s) und markierte es „Release-1.0.5“ Sie einfach tun „svn switch“ auf dem Server auf den neuen Tag. Hat nicht funktioniert, obwohl es getestet haben? Wechseln Sie zurück, und herauszufinden, was falsch ist.

Aber Vorsicht, in Subversion Verzweigung kann ein Schmerz sein, zumindest vor der Version 1.5. Wenn Sie oder Ihre Entwickler nicht mit Niederlassungen erfahren sind, erwartet ein wenig Aufwand und / oder Fehler am Anfang. Aber solange Sie keinen Code begangen haben sollte verloren gehen (im schlimmsten Fall einfach schwer zu verschmelzen).

Ihre Entwickler sollten wirklich lernen, wie Verzweigung zu verwenden; es kann für eine Vielzahl von Zwecken sehr nützlich sein (nicht nur für Release-Engineering).

Do nicht automatisch umschalten Code auf Ihre Produktionsserver; jemand könnte versehentlich die falsche Taste treffen. Produktion Updates sollte immer mit Vorsicht durchgeführt werden. Scripts für das Hinzufügen neuer Tags ist, imho, unnötig aufgrund der Einfachheit, aber die Leistung kann variieren.

Eine letzte Sache, nicht zulassen, dass jemand Änderungen auf dem Produktionsserver haben. Es könnte zu Konflikten führen, und diejenigen, neigen dazu, sich Zeit zu nehmen zu lösen. Ganz zu schweigen davon, es zerstört Ihre Fähigkeit, eine gegebene Veröffentlichung auf verschiedene Arbeitsplätze zu reproduzieren (funktioniert gut hier, warum nicht auf dem Server? Hmm).

Einige Continuous Integration Server tun, um diese Art der Sache, Hudson , zum Beispiel, hat Subversion-Integration. Es kann markieren, führen Sie testen und bereitstellen für Sie.

ich würde verwenden Hudson. zusätzlich von zu holen und in svn (ref sblundy) Tagging, kann es mit dem richtigen Plugins . zb, könnten Sie versuchen, ein Plugin zu „fördern“ die Builds Sie die Produktion bereitstellen, und halten eine Liste der sowohl das beworbene baut sich selbst und eine Änderung / Commit-Log für die verschiedenen Versionen.

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