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.

- to blog -

blog built using the cayman-theme by Jason Long. LICENSE