9

Ich bin auf der Suche nach Empfehlungen für die automatische Erstellung und Bereitstellung von Projekten.Was ist ein guter Build-Automatisierungs-und Bereitstellungsprozess für die Verwendung mit asp.net?

Unsere aktuelle Entwicklungsumgebung verwendet ASP.NET, SVN, CCNET und ein MSBuild-Skript für den Build des Dev-Servers. Ich dachte daran, statt CCNET zu Cruise zu wechseln, obwohl ich mir nicht sicher bin, ob mir das noch etwas gibt, das ich noch nicht habe.

Was ich automatisieren möchte, ist der Prozess von der Erstellung eines automatisierten Builds bis zur Aktualisierung der Live-Site mit den neuen Änderungen. Websiteaktualisierungen können Aktualisierungen der Basiswebsite sowie Clientaktualisierungen umfassen, bei denen es sich um Code- und/oder Datenbankänderungen handeln kann, sodass der Prozess flexibel genug sein muss, damit er diese Szenarien verarbeiten kann.

Eine meiner Quellen der Inspiration dafür kam aus this video sowie die endlosen Stunden verbrachte jeden Monat Updates.

+0

Nur ein Update nach 6 Jahren; Die Tools für die Automatisierung der Anwendungsfreigabe (https://en.wikipedia.org/wiki/Application_release_automation) wurden speziell für genau diese Zwecke entwickelt. BuildMaster ist eines der Tools, die es gibt, und [dieses Tutorial] (http://inedo.com/support/tutorials/building-and-deploying-a-net-web-application-using-buildmaster) umreißt den genannten Prozess. –

Antwort

4

Für kleine oder persönliche Projekte, würde ich mit so etwas wie den freien (und sehr gut) TeamCity von JetBrains empfehlen. Unit-Test-Automatisierung, kontinuierliche Integration und Regeln für das, was nach einem Build passiert (einschließlich Verschieben an verschiedene Orte).

Für größere Teams, ich habe tatsächlich ein bisschen Build-Automatisierung in Form von benutzerdefinierten MSBuild Aufgaben gefunden und RoboCopy funktioniert am besten. Diese nette Kombination zwischen der manuellen Förderung von Builds zwischen Umgebungen und der Verwendung von MSBuild & RoboCopy, um Teile dieses Prozesses zu automatisieren, schafft saubere Pausen zwischen Umgebungen (mit sehr wenigen 'Ups wollte ich nicht, dass es dort Fehler macht). Es ermöglicht uns auch, QA-Review-Builds vor der Promotion zu erstellen.

-Update 2014.07.31:

Ich habe custom TFS build templates mit Erfolg eingesetzt. Sie sind ein bisschen kompliziert, aber Sie können eine Menge cooler Dinge mit ihnen machen.

Für Open-Source-Projekte (wie NuGet-Bibliotheken) auf GitHub gehostet, glaube ich nicht, dass Sie AppVeyor schlagen können. Ich habe ein paar Projekte wie Mailchimp.NET, die komplette Build und NuGet Deploy-Automatisierung haben.

+1

Ich habe jetzt endlich von CruiseControl.NET zu TeamCity aufgerüstet und liebe es. Dies war viel einfacher zu verwenden, selbst mit benutzerdefinierten MSBuild-Skripten. –

0

Ich habe Nant in der Vergangenheit mit viel Glück für ähnliche Aufgaben verwendet. Sie können es mit Ihrem automatisierten Build starten. (http://nant.sourceforge.net/)

Wenn Sie etwas umfassenderes möchten, können Sie wix Besuche (http://wix.sourceforge.net/)

Jetzt sind Sie wirklich sicher, dass alles, was ein autmatic Build startet Sie die Live-Website zu aktualisieren? Oder meinen Sie, dass Sie einen Build starten, Ihr cc-Tool verwenden und dann einen Build generieren, um live zu gehen?

Ich würde es hassen, das Live-Site-Update zu haben, wenn jemand eine neue Version einer Datei eingecheckt hat.

Ihre Datenbankaktualisierungen werden wahrscheinlich der schwierigste Aspekt sein. Solange jedoch für das Datenbank-Update ein Änderungs-Skript eingecheckt ist, ist es nicht schlecht.

+0

Wir haben jetzt 2 Build-Typen. Der eine ist ein Dev-Build und der andere ein Release. Dev-Builds werden alle xx Minuten nach dem Einchecken von Code ausgeführt und führen die Unit-Tests usw. aus, während ein Release nur dann ist, wenn wir es starten und das meiste von dem, was ein Dev-Build macht, aber im Release-Modus ebenso wie als Version in SVN. –

0

Klingt wie die zwei wichtigsten Funktionen für die Bereitstellung Ihrer Codeänderungen ist: 1. Kopieren von Dateien und 2. Ausführen von DB Script-Änderungen. Wenn Sie sich mit MsBuild Community Tasks befassen, gibt es viele praktische Build-Aufgaben, die Ihnen auf dem Weg helfen können. SqlExecute und RoboCopy klingen so, als wären sie alles, was Sie benötigen würden. Dies würde erfordern, dass Sie Ihre Projektdateien modifizieren, um ihr Build-Verhalten zu erweitern, aber sobald dies erledigt ist, können Sie den manuellen Teil des Vorgangs "scripten".

Verwandte Themen