Frage
Gibt es einen legitimen Grund , SVN NICHT für Produktionsbereitstellungen zu verwenden, oder handelt es sich lediglich um einen Fall persönlicher Präferenz, und es gibt keinen wirklichen Fall gegen SVN?
Hintergrund
Mein Arbeitsplatz hat die Kultur, Releases in SVN zu markieren und diese Releases dann direkt auf den verschiedenen Webservern bereitzustellen svn co
oder svn switch
direkt in die Produktion einzubeziehen.
Ich persönlich habe ein Problem damit, da ich glaube, dass Sie ohne Verwendung eines Erstellungs- und Bereitstellungsskripts oder eines Formulars oder einer automatisierten Bereitstellung die Einstellungen der Integrationsumgebung verlieren, da diese nicht dokumentiert sind. Darüber hinaus habe ich jedoch das Gefühl, dass es eine versteckte Gefahr geben könnte, das zu tun, was übersehen wurde, etwas, das seinen hässlichen Kopf noch nicht aufgerichtet hat.
Ich habe meine Bedenken gegenüber den Betriebspersonal geäußert, die für die Bereitstellung von Code in unseren verschiedenen Umgebungen (Staging, Pre-Prod, Produktion) usw. verantwortlich sind. Ihre Argumente waren so ziemlich, dass es bisher ziemlich gut funktioniert hat, kein Grund zur Änderung.
Bearbeiten:
Was ich mit Erstellen und Bereitstellen meine:
Wenn ein Entwickler beispielsweise eine web.config-Einstellung benötigt, die für eine bestimmte Umgebung hinzugefügt wurde. Web.config wird im Allgemeinen nicht in svn gespeichert, daher werden diese Dateien manuell aktualisiert, ohne dass ein automatisiertes Build-Skript erforderlich ist. Wenn sie also verloren gehen oder OPS vergisst, der web.config ein Feld für eine Version hinzuzufügen, treten Probleme auf.
Ein Build-Skript, das XMLPoke verwendet, um automatisch eine für eine bestimmte Umgebung geeignete web.config zu generieren, ist ideal, da Sie über ein versionierbares Skript verfügen, das alle für jede Ihrer Umgebungen erforderlichen Änderungen dokumentiert.
Aktuelle Build- und Bereitstellungsmethode
Für das betreffende Projekt erstellt ein Entwickler eine Version manuell. Bei anderen Projekten wird der Erstellungsschritt entweder mit NANT oder mit MSBuild automatisiert, was in Ordnung ist.
Datenbankmigrationen für die meisten Projekte erfolgen über DB-Skripte oder Migrationsskripte (Migrator.NET) oder CMS-Pakete.
CI wird normalerweise von Team City pro Check-in durchgeführt. Wir haben einen Code-Überprüfungsprozess, bei dem alle Tickets in Filialen durchgeführt und dann vor dem Einchecken in den Trunk auf Validierung und Korrektheit / Qualität überprüft werden (funktioniert gut).
Die eigentliche Codebereitstellung erfolgt jedoch so gut wie immer über SVN, entweder über das Auschecken einer getaggten Version oder allgemeiner über einen SVN-Switch. Das ist etwas Seltsames an mir, dass wir unser Repository als Teil des Bereitstellungsprozesses verwenden.
Die Konfiguration ändert sich im Allgemeinen nicht sehr oft. Die einzigen Dinge, die in Konfigurationsdateien enthalten sind, sind umgebungsspezifische Informationen. Alles andere ist in der Datenbank.
Versteh mich nicht falsch, das funktioniert, es funktioniert gut. Ich möchte jedoch versuchen, auf eine automatisierte Erstellung und Bereitstellung zu drängen. Ich habe dies mit Rails und Capistrano und für persönliche Projekte mit Cygwin, Nant und SSH verwendet.
Noch wichtiger ist, dass ich sehr spezifische gültige Argumente benötige, um meine Kollegen dazu zu bringen, auf die Verwendung eines automatisierten Builds und Bereitstellens umzusteigen.
Oder gibt es KEINE wirklich gültigen Argumente gegen die Verwendung von SVN speziell für die Bereitstellung in der Produktion?