Fulmar für kleine Projekte
Fulmar basiert auf Rake und bringt einige Erweiterungen mit, um mit wenig Code ein Deployment durchzuführen. Zusätzlich zu den Rake-Tasks liest es eine Konfigurationsdatei ein, die unter anderem definiert, welche Ziele es gibt.
Die Basiskonfiguration von Fulmar liegt in zwei Dateien: “Fulmarfile” liegt im Basisverzeichnis des Projekts. Dazu kommt ein Unterverzeichnis “Fulmar”, das eine oder mehrere .config.yml-Dateien enthält.
Konfiguration
Meine Konfigurationsdatei Fulmar/kayssun.config.yml
für dieses Blog sieht wie folgt aus:
environments:
local:
blog:
local_path: .
live:
blog:
remote_path: /srv/www/www.kayssun.de
local_path: _site
type: rsync
hostname: ada
Fulmar unterteilt die Ziele einerseits in Environments, bei größeren Projekten in der Agentur wären das zum Beispiel “vagrant” für die lokale Entwicklung, “staging” für erste Tests, “preview” für eine Kundenvorschau und “live” für das Produktivsystem. Hier habe ich nur die Einvironments “local” und “live”. Darunter können beliebig viele “targets” angelegt werden, hier “blog”. Das wird nötig, wenn zu einem Projekt mehrere Dateien gehören, die an unterschiedliche Stellen auf dem Server kopiert werden müssen (zum Beispiel Konfigurationsdateien für andere Dienste).
Hier in meinem Beispiel setze ich die lokalen und entfernten Pfade, die Art des Syncs und den Hostname des Servers.
Die Targets werden dann im Fulmarfile
geladen:
desc 'Prepare site (build blog)'
task setup: 'environment:local:blog' do
local_shell.run 'jekyll build'
end
namespace :deploy do
desc 'Deploy blog to live system'
task live: 'environment:live:blog' do
file_sync.transfer
end
end
Der erste Task lädt die lokale Konfiguration. local_shell.run
führt den Befehl im local_path
der gewählten Konfiguration aus. Das wäre hier “.”, also das Verzeichnis, in dem sich Fulmarfile
befindet.
Der zweite Task synchronisiert das Verzeichnis “_site” auf den Server. Über remote_shell.run
könnten auf dem Server noch Befehle ausgeführt werden, etwa um Caches zu löschen.
Benutzung
Über fulmar -T
kann die Liste der verfügbaren Tasks eingesehen werden. fulmar setup
kompiliert in meinem Fall das Blog und stellt es unter “_site” bereit. Mit fulmar deploy:live
kann dieses Verzeichnis auf den Server synchronisiert werden.
Ausbau
Fulmar wird erst für größere Projekte interessant. In der Agentur (CORE4 GmbH) nutzen wir für alle Projekt möglichst das gleiche Schema. Das macht es leichter, sich in fremde Projekte einzuarbeiten. fulmar setup
ist dabei immer der erste Befehl nach dem Auschecken aus dem Git. Damit werden alle nötigen Abhängigkeiten geholt und das System für die Entwicklung vorbereitet. Fulmar bringt Unterstützung für Git, MySQL/MariaDB, rsync, Versionierung der Deployments. S3 und weitere Features werden folgen.