Wenn man auf mehreren Plattformen, an unterschiedlichen Orten und/oder an verschiedenen (wordpress-) Projekten arbeitet, wünscht man sich irgendwann eine Entwicklungsumgebung, die man zentral mit den Daten aller Projekte einrichtet und von überall einfach erreichen kann. Was eignet sich dafür besser als mein NAS-Server und Docker?
Achtung! Dieser Artikel ist eine Baustelle und wird erst nach und nach fertiggestellt. Also bitte alle Aussagen zunächst mit Vorsicht behandeln und selbst nachprüfen!
Es gibt viele Ansätze, eine solche Umgebung aufzubauen. Grundlage soll in jedem Falle Open-Source-Software sein. Neben der Sympathie für den OSS-Gedanken spielen bei dieser Vorgabe natürlich die Kosten eine entscheidende Rolle: ein privater Entwickler ohne Gewinnabsichten kann kaum größere Summen in seine Softwareausstattung investieren.
Erste Entscheidung: die IDE
Die erste Entscheidung fällt bei der Auswahl der IDE. Schon bei mittleren Projekten ist sie quasi Pflicht, erleichtert sie doch ungemein den Überblick über meist später doch ausufernde Projekte und hilft mit unterstützenden Funktionen wie Code-Highlighting, -Vervollständigung und Refactoring.
Neben mehreren Eclipse-basierten IDEs ist vor allem Netbeans mit seiner hervorragenden PHP-Integration und Debugging-Möglichkeiten einen Blick wert. Ich arbeite damit seit Jahren, nachdem ich mich lange Zeit mit Eclipse gequält hatte.
Für die Arbeit mit WordPress existiert sogar ein Plugin, das bei der Projekt-Erstellung für neue Plugins oder Themes und der Paketierung unterstützt. Im Moment fehlt leider eine Version für die aktuelle Netbeans-Version 10, was sich aber hoffentlich demnächst ändern wird.
Die IDE wird auf jedem Entwicklungsrechner lokal installiert und nutzt dort eine lokale Replikation des Software-Repository.
Versionsverwaltung
Zu Beginn eines jeden Projekts mag man glauben, dass eine Versionsverwaltung mit Kanonen nach Spatzen schießen würde. Aber spätestens, wenn man sich nach Monaten wieder an eine Änderung oder Erweiterung seiner Software macht, wird man die Entscheidung für ein VCS lieben lernen.
Git ist hier der Platzhirsch. Wenn man ein externes Repository bei einem Provider wie Githus oder Bitlocker nutzen will, hat man sicher keine andere Wahl.
Wenn man sein Repository selbst hosten will, erweist sich Git aber schnell als ein Moloch mit einer Unmenge an Komponenten und Abhängikeiten, die Installation und Betrieb zu einem Albtraum werden lassen.
Eine sehr viel einfachere Möglichkeit für Einzelentwickler und kleine Gruppen ist das in Go entwickelte Gogs. Es braucht lediglich eine Datenbank (MySQL/MariaDB, PostgreeSQL, Redis oder memcached) und die Binaries, die für viele Plattformen verfügbar sind. Mit Docker und einer existierenden Datenbank ist Gogs in wenigen Minuten aufgesetzt (siehe auch den Gogs-Artikel).
Client-seitig verhält sich Gogs wie ein Git-Server, so dass man die Git-Unterstützung der IDE oder beliebige andere Git-Clients nutzen kann. Die Arbeit damit wird ein zukünftiger Artikel zum Thema haben.
Der Testserver
Um Projekte zu testen, braucht man einen Testserver, auf dem die jeweilige Version immer frisch installiert werden kann. Auch dazu bieten sich natürlich Docker-Container des NAS an. Die speziellen Anforderungen beschreibt ein eigener Artikel.