Jedes Mal, wenn ein neuer Entwickler dem Team oder dem Computer beitritt, den ein Entwickler verwendet, muss der Entwickler viel Arbeit leisten, um die lokale Entwicklungsumgebung so einzurichten, dass das aktuelle Projekt funktioniert. Als SCRUM-Team versuchen wir, alles zu automatisieren, einschließlich Bereitstellung und Tests. Ich frage also: Gibt es ein Tool oder eine Vorgehensweise, um die Einrichtung der lokalen Entwicklungsumgebung zu automatisieren?
Zum Beispiel musste ich zum Einrichten meiner Umgebung zuerst Eclipse installieren, dann SVN, Apache, Tomcat, MySQL, PHP. Danach habe ich die Datenbank gefüllt und musste geringfügige Änderungen an den verschiedenen Konfigurationsdateien usw. vornehmen. Gibt es eine Möglichkeit, diese Arbeit auf einen Klick zu reduzieren?
Ich bin über diese Frage gestolpert und war sehr überrascht, dass noch niemand Vagrant erwähnt hat.
Wie Pete TerMaat und andere bereits erwähnt haben, ist Virtualisierung eine hervorragende Möglichkeit, Entwicklungsumgebungen zu verwalten und zu automatisieren. Vagrant nimmt im Grunde genommen den Schmerz vom Einrichten dieser virtuellen Boxen.
Innerhalb weniger Minuten können Sie eine völlig neue Kopie Ihres Lieblings - Linux distro und läuft, und provisioniert genau die gleiche Art und Weise des Produktionsserver ist.
Keine Kämpfe mehr mit OSX oder Windows, um PHP, MySQL usw. zu installieren. Die gesamte Software lebt und läuft in der virtuellen Maschine. Sie können sogar SSH mit
vagrant ssh
. Wenn Sie einen Fehler machen oder etwas kaputt machen, machen Sievagrant destroy
es einfach undvagrant up
fangen Sie von vorne an.Vagrant erstellt automatisch einen synchronisierten Ordner mit Ihrem lokalen Dateisystem, sodass Sie nicht innerhalb der virtuellen Maschine entwickeln müssen (dh mit Vim). Verwenden Sie einen beliebigen Editor.
Ich erstelle jetzt für fast jedes Projekt, das ich mache, eine neue "Vagrant-Box". Alle meine Einstellungen werden im Projekt-Repository gespeichert, sodass es einfach ist, ein anderes Teammitglied zu gewinnen. Sie müssen einfach das Repo ziehen und rennen
vagrant up
, und sie sind buchstäblich bereit zu gehen.Dies erleichtert auch die Bearbeitung von Projekten mit unterschiedlichen Softwareanforderungen erheblich. Vielleicht haben Sie einige Projekte, die auf PHP 5.3 basieren, aber einige neuere, die PHP 5.4 ausführen. Installieren Sie einfach die gewünschte Version für dieses Projekt.
Hör zu!
quelle
Ein wichtiger Punkt ist, Ihre Projekte in der Quellcodeverwaltung so einzurichten, dass Sie sie sofort nach dem Auschecken erstellen, bereitstellen und ausführen können.
Das bedeutet, dass Sie auch die Hilfsinfrastruktur wie Makefiles, Ant-Buildfiles usw. und Einstellungen für die Tools wie IDE-Projektdateien einchecken sollten.
Das sollte den Einrichtungsaufwand für einzelne Projekte beseitigen.
Für die grundlegende Maschineneinrichtung können Sie ein Standardabbild verwenden. Eine weitere Option ist die Verwendung der Tools Ihrer Plattform zur Automatisierung der Installation. Unter Linux können Sie ein Metapaket erstellen, das von allen benötigten Paketen abhängt. Unter Windows sollte etwas Ähnliches mit MSI oder ähnlichem möglich sein.
Bearbeiten:
Anstatt die Hilfsinfrastruktur einzuchecken, checken Sie im Idealfall die Informationen ein, mit denen der Build die Hilfsinfrastruktur generieren kann . Dies ist der Ansatz, der beispielsweise vom GNU-Build-System (Autotools usw.) oder von Maven verfolgt wird. Dies ist noch eleganter, da Sie (theoretisch) eine Infrastruktur für jede (unterstützte) Build-Umgebung generieren können, sodass Sie nicht an eine bestimmte IDE gebunden sind und die Einstellungen in der Hilfsinfrastruktur (Pfade usw.) nicht dupliziert werden müssen die wichtigsten Projekteinstellungen.
Dies ist jedoch auch ein komplexerer Ansatz. Wenn Sie ihn also nicht zum Laufen bringen können, ist es meiner Meinung nach akzeptabel, Dinge wie IDE-Dateien direkt einzuchecken.
quelle
Ich verwende gerne Virtual PC oder VMware, um die Entwicklungsumgebung zu virtualisieren. Dies bietet eine Standard- "Entwicklungsumgebung", die von Entwicklern gemeinsam genutzt werden kann. Sie müssen sich keine Gedanken über Software machen, die der Benutzer seinem System hinzufügen könnte und die möglicherweise mit Ihrer Entwicklungsumgebung in Konflikt steht. Es bietet mir auch die Möglichkeit, an zwei Projekten zu arbeiten, bei denen sich die Entwicklungsumgebungen nicht beide auf einem System befinden können (unter Verwendung von zwei verschiedenen Versionen einer Kerntechnologie).
quelle
Verwenden Sie Puppet , um sowohl Ihre Entwicklungs- als auch Ihre Produktionsumgebung zu konfigurieren. Die Verwendung eines erstklassigen Automatisierungssystems ist die einzige Möglichkeit, Ihre Operationen zu skalieren.
quelle
Es besteht immer die Möglichkeit, virtuelle Maschinen zu verwenden (siehe z . B. VMWare Player ). Erstellen Sie eine Umgebung und kopieren Sie sie für jeden neuen Mitarbeiter mit minimalem Konfigurationsaufwand.
quelle
An einem früheren Ort hatten wir alles (und ich meine ALLES) in SCM (Clearcase, dann SVN). Wenn ein neuer Entwickler dies tun kann, hat er ClearCase | SVN installiert und das Repository abgesaugt. Dies behandelt auch den Fall, dass Sie eine bestimmte Bibliothek / ein bestimmtes Tool aktualisieren müssen, da Sie nur die Entwicklerteams ihre Umgebung aktualisieren lassen können.
Wir haben dafür zwei Repos verwendet, sodass Code und Tools / Config an verschiedenen Orten lebten.
quelle
Ich kann Blueprint von DevStructure nur empfehlen. Es ist Open Source und Ihr Anwendungsfall ist genau der Grund, warum wir die Software ursprünglich geschrieben haben. Unsere Ziele haben sich etwas geändert, aber es ist immer noch das perfekte Werkzeug für das, was Sie beschreiben. Kurz gesagt, Sie können wiederverwendbare Serverkonfigurationen erstellen - eine absolut einfache Konfigurationsverwaltung. Ich hoffe das hilft!
https://github.com/devstructure/blueprint (Blueprint @ Github)
quelle
Ich habe selbst darüber nachgedacht. Es gibt einige andere Technologien, die Sie in die Mischung einbringen könnten. Folgendes richte ich gerade ein:
sudo apt-get install acmecorp-eclipse-env
odersudo apt-get install acmecorp-intellij-env
zum Beispiel.apt-cacher
(Paket-Proxy). Zusätzlich zur Einsparung von Bandbreite werden Ihre Installationen viel schneller (da Pakete in Ihrem lokalen Netzwerk zwischengespeichert werden).quelle
Wenn Sie OSX verwenden und mit Rails arbeiten. Ich würde entweder vorschlagen:
quelle
Wenn Sie Computer in einer Standardkonfiguration verwenden, können Sie die Festplatte mit einer neuen, perfekt konfigurierten Installation abbilden - dies ist ein sehr beliebter Ansatz in vielen Unternehmen (und nicht nur für Entwickler). Wenn Sie separat konfigurierte Betriebssysteme benötigen, können Sie alle hinzugefügten und geänderten Dateien tar-bz2, sobald ein konfiguriertes Betriebssystem in das gewünschte Setup umgewandelt wurde, und es einfach als root entpacken, um die gewünschte Umgebung von Grund auf neu zu erstellen.
quelle
Wenn Sie eine Linux-Variante verwenden, haben Sie wahrscheinlich ein Paketverwaltungssystem: denkt .rpm für Fedora / Redhat oder .deb für Ubuntu / Debian. Für viele der von Ihnen beschriebenen Dinge sind bereits Pakete verfügbar: svn, eclipse usw. Sie können Ihre eigenen Pakete für unternehmensspezifische Software rollen, ein Repository erstellen (möglicherweise nur im lokalen Netzwerk verfügbar) und dann Ihr Setup auf ein einziges reduzieren Bash-Skript, das das Firmen-Repo zu /etc/apt/sources.list (debian / ubuntu) hinzufügt und dann einen Befehl wie folgt aufruft:
Sie können Buildbot verwenden, um dann regelmäßige Builds für Unternehmenspakete zu automatisieren, die sich häufig ändern.
quelle
Probieren Sie DevScript unter http://nsnihalsahu.github.io/devscript aus . Es ist ein Befehl wie
devscript lamp
oderdevscript laravel
oderdevscript django
. In wenigen Minuten, abhängig von der Geschwindigkeit Ihrer Internet-Coquelle