Frage

Ich versuche, den Erstellungsprozess für die Engineering-Gruppe zu automatisieren.Im Rahmen dieser Automatisierung versuche ich, einen Punkt zu erreichen, an dem das Anwenden eines bestimmten Tags, das einem Muster entspricht, einen automatisierten Prozess auslöst, der Folgendes bewirkt:

  • Schauen Sie sich den Quellcode an
  • Erstellen Sie ein Build-Skript aus einer Vorlage
  • Erstellen Sie das Projekt

Ich bin mir ziemlich sicher, dass ich das mit einem Post-Hook in Subversion machen könnte, aber ich versuche, einen Weg zu finden, dies mit etwas anderem als einem Subversion-Hook zu machen.

  • Wäre es sinnvoll, das Tags-Verzeichnis im Subversion-Repository zu überwachen, um meinen Workflow zu starten?
  • Gibt es irgendwelche anständigen Tools, die dabei helfen (.NET wäre großartig, wenn möglich).
  • Ist es besser, dafür einfach eine Engine zu schreiben?

Meine Vorlieben:

  • Bestehendes Produkt, das dies ganz oder teilweise erledigt
  • Wenn Entwicklungsarbeiten erforderlich sind, ist .NET vorzuziehen
  • Funktioniert mit Windows (wir haben ein Linux-basiertes Repo, aber alle Builds laufen unter Windows)
War es hilfreich?

Lösung

Ich mag hudson - einfach einzurichten und arbeitet aus der Box mit SVN.

Sie können es so konfigurieren, jeder verpflichten aufbauen.

ich es heruntergeladen und habe begonnen, innerhalb eines Tages mit ihm zu bauen. Es hat sich durch viele Verbesserungen gegangen, aber ich würde es jedem empfehlen.

Ich habe auch Tempomat verwendet, aber bin nicht so zufrieden. Ich habe keine besonderen Gründe, die nicht plattformübergreifende Thema.

EDIT

Ich habe vor kurzem einen Job auf meinem hudson Build-Server, der für eine Google / gmail Jabber Chat hört. Ich kann „fördern“ a „regular“ mit diesem Mechanismus zu einem Release-Build bauen. Ich habe gerade einen neuen Job auf, das die Schritte tut notwendig, eine private Build in einen Release Candidate zu fördern / veröffentlichen.

Andere Tipps

Ich habe dies mit Hudson getan. In der regulären Subversion Kasse Steckplatz habe ich eine Kasse für den Kofferraum:

http://dryad.googlecode.com/svn/trunk/dryad

Dann, als die erste Build-Aktion, ich habe ein „Ausführen shell“ und in dieser Shell einen SVN-Schalter verwenden, um den neuesten Tag im Repository zu ändern:

svn switch http://dryad.googlecode.com/svn/tags/ ‘ svn ls http://dryad.googlecode.com/svn/tags | tail -n 1' Dryade

Der nächste Build-Schritt ist ein Maven-Befehl ‚saubere Installation‘, die die Build starten den Code aus der markierten Version.

Ich habe noch nicht herausgefunden, wie Hudson zu bekommen mit einer neuesten getaggten Version zu starten, anstatt die Schalter zu tun, aber der Schalter funktioniert. Sie können dann den Auslöser sein, wenn das Tag-Verzeichnis aktualisiert wird.

Es ist automatisiert ... ein bisschen eine Flickschusterei, aber es funktioniert ...

sollte der Schalter eine Graviszeichen für den zweiten SVN-Befehl umfasst, hatte aber "zu verwenden, da die Graviszeichen nicht hier angezeigt.

Hört sich an, als wären Sie auf der Suche nach einer Continuous-Integration-Build-Engine wie CruiseControl oder Hudson (Hudson ist in Java geschrieben, lässt sich aber in Windows SEHR einfach verwenden).

Jetzt könnten Sie Ihre Build-Skripte so manipulieren, dass diese Tools das Tag-Verzeichnis überwachen, aber das wäre ein wenig widersinnig, da sie dazu gedacht sind, einen bestimmten Speicherort zu überwachen und das Projekt an diesem Speicherort zu erstellen.Wenn Sie das gesamte Tag-Verzeichnis überwachen, könnte es leicht passieren, dass alle Tags auf dem Build-Rechner ausgecheckt werden und Sie ein Skript der obersten Ebene benötigen, um zu entscheiden, welches Tag erstellt werden soll.

Wenn Sie möchten, kann eine Build-Engine einen bestimmten Speicherort überwachen (z. B. „/branches/release“).Wenn Sie sich dann in diesen Zweig verschmelzen, erstellt Hudson das Projekt automatisch, archivieren Sie die Artefakte und erstellen Sie ein Tag für Sie, wenn alles erfolgreich war (siehe Subversion Tagging -Plugin).

Ich mache so etwas nicht gerne von einem Post-Commit-Hook aus, weil die Commit-Phase dadurch zu lange dauert.TeamCity ist jedoch ein Quellcodeverwaltungssystem, das über eine Funktion verfügt, die genau das tut, ohne Sie beim Festschreiben aufzuhalten.

Ich würde es empfehlen Hudson dafür.

CruiseControl.Net leicht automatische automatisieren baut von Subversion-Repositorys.

Es kann das Repository (Svn und mehrere andere Arten) überwachen und startet automatische baut eine Vielzahl von Werkzeugen. (NAnt, MSBuild usw.)

Ein kommerzielles Produkt hat diesen Zweck genau auf dieser Seite beworben!

http://www.finalbuilder.com/Default.aspx?tabid=314

Sie müssen möglicherweise einen post-Haken SVN hinzufügen, um den Build-Start auslösen, wenn Sie es wollen, einen Zeitplan ausgeführt werden.

Ich würde auch Hudson für diese empfehlen. Ich war auf der Suche etwas ähnliches zu tun, einen Tag erstellen und diese Kick-off ein Build. Stattdessen entschied ich mich dieses Plugin für hudson zu verwenden:

http://wiki.hudson-ci.org/display/HUDSON/ Release + Plugin

Und verwenden Sie diese Schöpfung des Tags zu fahren und eine explizite Freigabe zu bauen.

Ich bin mit NAnt (und NAntContrib ) für automatisierte Builds. Es überprüft automatisch eine Subversion-Repository für Änderungen und (falls vorhanden) die neueste Quellcode Version bekommt und startet den Build.

Ich bin mir nicht sicher, ob die bestehenden Aufgaben ermöglichen genau das tun, was Sie wollen, aber vielleicht könnte man es als Start verwenden und bei Bedarf erweitert sie mit Aufgaben für Ihre speziellen Bedürfnisse (Es ist mit .NET entwickelt).

Wie die anderen Jungs gesagt, möchten Sie eine kontinuierliche Integration Server (CruiseControl-, CruiseControl.Net, Hudson, etc). Während Sie auf Ihrem Build-Skript und commit Haken funktionieren könnten die Funktionalität, die Sie beschrieben, am Ende zu tun, finden Sie finden Sie das Rad (Continuous Integration Server) neu erfunden. Keine Notwendigkeit, gibt es frei verfügbare Lösungen genau für diesen Zweck.

Der Prozess funktioniert ein bisschen anders, als Sie oben beschrieben. Der Build-Server:

  1. Detect ein neues Commit
  2. Kasse Ihr Quellcode
  3. Führen Sie Ihre Build-Skript
  4. Tag auf erfolgreichen Build

Die Commit löst den Prozess und schafft den Tag, anstatt den Tag, um den Prozess auslöst. Der Server tut dies meine Überwachung der SVN-Repository, anstatt einen Haken begehen.

Überprüfen Sie CruiseControl.Net der Dokumentation zu diesem Thema aus, insbesondere die Optionen tagOnSuccess und tagBaseUrl. Hudson und Cruisecontrol sollten ähnliche Optionen.

http://confluence.public.thoughtworks.org / Anzeige / CCNET / Subversion + Quelle + Strg + Block

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