Frage

Wenn Sie ein Solo -Projekt durchführen, verwenden Sie CI -Tools, um aus einem Repository aus zu erstellen? Ich habe Hudson und die Geschwindigkeitsregelung in einer Teamumgebung verwendet, in der es wichtig ist, aufzubauen, sobald jemand etwas überprüft.

Ich denke, der Wert der Versionskontrolle ist immer noch offensichtlich, aber muss ich nach jedem Commit bauen, da ich gerade auf meiner lokalen Maschine aufgebaut hätte, und niemand sonst begeht?

War es hilfreich?

Lösung

Nun, ich plane, ein kontinuierliches Integrationstool für ein Projekt zu verwenden, und ich bin der einzigartige Entwickler. Das Bedürfnis kommt, weil

  1. Ein Ziel ist es, es plattformübergreifend zu gestalten, und ein Integrationstool hilft Ihnen implizit (grundlegend) Ihre App auf einer mehreren Plattform zu überprüfen wird als maßgeblich verwendet).
  2. Das Projekt ist langfristig gebaut, daher muss ich später mit einem Team zusammenarbeiten. Ich plane erst 2012, jemanden zu rekrutieren, damit die kontinuierliche Integrationssache auf den Moment warten kann, bis 1. es wird zur Priorität.

Abgesehen von plattformübergreifender und Team-Work-Vorbereitung sehe ich die Notwendigkeit nicht. Die Hauptsache ist, eine Art von Source Control -Software zu haben und mehrere Repository zu haben, um Backups zu führen. Dies hilft Ihnen dabei, bei Bedarf Tools zu erstellen.

Über das Build -Timing verwende ich Mercurial und richte ein Integrations -Repository ein, das nicht das Teamwork -Repository ist. Drücken Sie also Änderungen im Teamwork -Repo, bis ich der Meinung bin, dass es Zeit ist, das Integrationssystem zu erstellen. Dann schiebe ich vom Teamwork Repo zum Integration Repo und das wird den Build auslösen. Dann füge ich auch ein Skript hinzu, das das Teamwork -Repo jeden Tag einmal im Integration -Repo zieht.

Hier gehe ich davon aus, dass ich fast alle Tage an meinem Projekt arbeite, aber es ist nicht immer wahr. Sie müssen ein Build -Timing festlegen, das relativ zu Ihrer benötigten Builds ist. In einer Spielfirma, an der ich zuvor gearbeitet habe, haben wir CruiseControl verwendet und es baute jede Stunde einen vollständigen Build. Wir könnten auch einen Build erzwingen, wann immer wir wollten, wenn nötig.

Für ein Heimprojekt ist ein einmal am Tag schon "oft". Die Hauptanforderung wäre, dem Benutzer leicht zu ermöglichen, den Start eines Builds zu erzwingen.

Andere Tipps

Nach einer kurzen Betrachtung würde ich vorschlagen, dass dies sogar sein könnte mehr wichtig für einen Solo -Entwickler als für ein Team.

Auf der grundlegendsten Ebene zeigt ein CI -Server, dass Sie Ihre Anwendung von Grund auf neu erstellen können - kombiniert mit einem angemessenen Test von Tests, sie sollte zeigen, dass Sie von Grund auf neu erstellen und laufen können.

Da eines der Dinge, die ich versuche, sicherzustellen, dass mein Build ein bereitgestelltes Paket enthält, wissen Sie auch, dass Sie etwas zum Bereitstellen (sauber und aus einer bekannten Version/Version) erhalten können.

Tatsächlich sollten Sie jetzt, wenn Sie Datei | neues Projekt ausführen, wahrscheinlich das Erstellen oder Hinzufügen Ihres Repositorys und das Einrichten Ihres CI -Build -Skripts und -bereitstellungsaufbaus einfügen (auch wenn dies nur einen Haufen Zeug für die Bereitstellung von XCOPY -Bereitstellungen anschließt)


Addendum (2016) - Heutzutage wird mein CI -System auch ein wesentlicher Bestandteil meines Bereitstellungsprozesses sein, sodass sein Wert gestiegen ist und ich ohne diese absolut kein lieferbares Projekt durchführen kann. Die automatisierte Drucktaste -Bereitstellung nimmt viel Stress aus dem Prozess heraus, und in irgendeiner Weise ist Form oder Bildung eines Build -Servers ein wesentlicher Bestandteil dafür.

Wenn ich der einzige bin, der sich begeht, baue und teste ich einfach auf und teste ich Vor tatsächlich begehen. Normalerweise benutze ich ein Makefile -Ziel wie:

make sense

Das konfiguriert, baut, läuft alle Tests (Valgrind Awesare), läuft FINTS usw. Wie ich weiß, dass ich der einzige sein werde, der drückt, brauche ich nicht wirklich die Kraft von so etwas wie Hudson.

In einer Umgebung, in der mehrere Verzweigungen ein Haupt -Repository füttern, kann der CI -Server, wenn jeder dem Always -Pull folgt, vor dem Töten oder Schieben folgt. Eine gut geschriebene Regel, dass der Autor von allem, was am Freitag Pizza gebrochen hat, in der Regel die Dinge sehr reibungslos läuft :)

Wenn es in eine Situation gerät, in der ein Projekt eindeutig in Sub -Systeme unterteilt ist, die ihre eigenen Führer haben, sind Sie Ja wirklich Ich muss nachdenken, wie man so etwas wie Hudson verwendet. Jemand könnte lokal testen, ein Rennen mit einem anderen Subsystem verlieren und am Ende etwas giftig drücken.

Wenn Sie eine Gabel eines sich schnell bewegenden Projekts beibehalten (zum Beispiel Ihre eigene Patches für den Linux -Kernel), sollten Sie wirklich in Betracht ziehen, etwas wie Hudson zu verwenden, obwohl Sie bei diesem Projekt „Solo“ sind. Dies gilt insbesondere dann, wenn Sie direkt von der Mainline abzweigen / neu sind.

Ich würde nicht sagen, dass dies nur ein schöner Bonus ist. Ich würde sagen, dass es für uns Solokünstler von qualitativ hochwertigem Software -Engineering von entscheidender Bedeutung ist. Die meisten von uns lassen ihre Qualitätsstandards ein wenig rutschen, wenn sie der Meinung sind, dass es einfach genug ist, später zu reparieren. Wenn Sie in diesem Zustand Software begehen, haben Sie im Wesentlichen eine wertlose Codebasis in Ihrer Quellvertretung gespeichert.

Wenn Sie die Tests nicht überspringen und sicherstellen, dass sie jedes Mal aufbaut, wenn Sie sich verpflichten), zwingt CI Sie dazu, sich an einen Standard -Standard zu halten, als wenn Sie es sowieso begehen würden.

Es ist wichtig, wenn Sie Ihre Wartezeit verkürzen möchten, um zu sehen, ob noch alles gut läuft. Obwohl Sie Ihre IDE dazu bringen können, Sachen für Sie zu kompilieren, sobald Sie sparen Ich schiebe es.

Der einzige Auslöser, den ich tun muss, ist, meine aktuellen Änderungen in die Versionskontrolle zu bringen, und ich kann wieder auf die Codierung zurückkehren. Und während ich über das Codieren nachdenke, ist das CI -System damit beschäftigt, die langweiligen Qualitätsberichte zu erstellen, die ich ab und zu ansehen werde, wenn mein Gehirn in eine Pause geht.

Ich habe einen separaten VMware-Computer auf demselben Laptop, der die Builds für Code ausführt, die ich drücke. Dazu erhalte ich nur ein schlüsselfertiges Linux-VMware-Image und installiere die Jenkins mithilfe von APT-Get und führe einige kleinere Konfigurationsänderungen vor.

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top