Kollaboratives Arbeiten mit Octopress und GitHub Pages

In diesem Post beschreibe ich einen Workflow, mit dem mehrere Leute mithilfe von Octopress und GitHub Pages einfach, schnell und kostenfrei bloggen können. Ich hatte bereits schonmal "einen Artikel" über meine Suche nach einer neuen Blogsoftware geschrieben, hier jetzt etwas mehr "hands on" und weniger "rant". Ursprünglich hatte ich diesen Beitrag als eine Anleitung für Stephan geplant, damit er endlich mal wieder mitbloggen kann. Aber ich dachte, es kann durchaus auch für andere Leute interessant sein. Also los!

Installation

(Im Großen und Ganzen ist diese Installationsanleitung eine Zusammenfassung der Setupanleitung der offiziellen Octopress Dokumentation. Im Zweifelsfall solltest du dort nachschauen, falls irgendwas nicht funktioniert. Wenn das auch nicht hilft, kannst du gerne ein Kommentar schreiben, dann versuche ich zu helfen.)

Lege ein neues Repository auf Github an. Der Name ist egal, am Ende ist dieses Repo (und damit dein Blog) über die Adresse "http://username.github.com/reponame" verfügbar. Bei mir ist es beispielsweise "http://benben.github.com/nerdlabor".

Für die Installation von Octopress sollte eine Ruby Version größer als 1.9.2 installiert und einsatzbereit sein. Am besten du benutzt den Ruby Version Manager oder kurz RVM. Wie das geht steht im Octopress Ruby Install Guide oder allgemeiner direkt bei RVM.

Bei Octopress gibt es keine richtigen Versionen, also kannst du einfach den aktuellen master-Zweig klonen:

git clone git://github.com/imathis/octopress.git octopress

Jetzt hast du einen Ordner "octopress". Nun kannst du folgende Befehle eingeben um die Installation zu beenden:

cd octopress
gem install bundler
bundle
rake install

Nun muss das zuvor angelegte Github-Repository als Deploy-Ziel angegeben werden. Dazu

rake setup_github_pages

ausführen und die Repo-Push-Url angeben. Bei mir wäre das "git@github.com:benben/nerdlabor.git". Octopress sollte alles weitere selbst erledigen.

Jetzt kannst du mit

rake generate
rake deploy

dein neues Blog erstellen und in den gh-pages-Zweig auf Github pushen. Warum gh-pages-Zweig? Weil Github Pages für Projekte so funktioniert. Mehr dazu hier (Abschnitt Project Pages).

Um nun aber auch den eigentlichen Quellcode des Blogs speichern zu können und nicht nur die statischen kompilierten Blogseiten (die bereits im gh-pages-Zweig sind), musst du noch folgendes tun:

git remote add origin (your repo url)

Dieser Befehl fügt dein Repository auf Github als origin hinzu. Also bei mir wäre es dieser Befehl:

git remote add origin git@github.com:benben/nerdlabor.git

Jetzt noch ein

git config branch.master.remote origin

um dein Repository auf github als default zu setzen. Den aktuellen Quellcode kannst du jetzt mit

git add .
git commit -am "initialer blog quellcode"
git push origin master

committen und pushen.

Also nochmal kurz: Im master-Zweig deines Repositories ist dein Blog Quellcode und im gh-pages-Zweig ist dein kompilierter Blog, der dann angezeigt wird.

Nun kannst du die _config.yml bearbeiten um dein Octopress zu konfigurieren. Das Einzige, was am Anfang gebraucht wird, ist eine korrekte Url, die deiner oben genannten Github Project Pages Url entspricht. Committe und pushe deine Änderungen danach in den master-Zweig.

Jetzt bist du endlich bereit und kannst mit dem Bloggen beginnen! Wurde aber auch Zeit!

Bloggen

Obwohl dieser Beitrag für mehrere Benutzer geschrieben ist, macht es auch Sinn wenn man alleine ist, da man a) den Überblick hat was die aktuellste Version ist und b) alles sicher aufgehoben ist und c) der git/GitHub-Workflow das Veröffentlichen so einfach wie ein "git push" macht.

Als erstes ein neues Blogpost-Template anlegen:

rake new_post["Mein neuer Blogposttitel"]

Dieser Befehl legt eine Datei unter octopress/source/_posts/ an. Diese kannst du jetzt mit deinem bevorzugen Editor öffnen. Am besten du beginnst mit den Konfigurationen im Header und verpasst deinem Blogpost ein paar Kategorien. Diese sind bei Octopress das gleiche wie Tags.

tags:
- octopress
- github
- ruby

Jetzt noch deinen Benutzername hinzufügen:

author: ben

Jetzt kannst du anfangen deinen Blogpost zu schreiben. Wenn du eine Vorschau sehen möchtest, dann speichere ab und führe

rake generate
rake preview

aus. Dann kannst du im Browser auf http://localhost:4000/reponame deinen Blog mit deinem neuen Blogpost sehen. Schreibe weiter an deinem Blogpost, speichere und aktualisiere das Browserfenster. Octopress müsste die Änderungen erkennen und die neue Version automatisch generieren solange der "rake preview"-Prozess läuft.

Wenn du zufrieden mit deinem Blogpost bist und denkst er ist gut genug, um die Welt zu verändern dann einfach ein

rake deploy

ausführen und der Blogpost ist in deinem Blog veröffentlicht. Jetzt musst du nur noch deine Änderungen committen und pushen, um auch den Quellcode des Blogposts auf Github zu schieben. Das geht mit

git add .
git commit -am "mein neuer blogpost"
git push origin master

Fertig!

Ein Freund zum mitbloggen einladen

Möchtest du jetzt einen Freund oder Kollegen zum mitbloggen anregen, dann füge ihn als Collaborator auf Github zu deinem Repository hinzu, damit er dort auch hinpushen kann.

Dann kann er das Repository klonen (dabei darauf achten, die ssh URI zu benutzen, die mit git@github.com beginnt) und folgende Befehle ausführen. (Hoffentlich hat er Ruby schon installiert! Wenn nicht, zeig ihm wie es geht, du weißt es ja jetzt.)

gem install bundler
git checkout master
bundle
rake setup_github_pages # dabei die gleiche URI wie beim klonen angeben

Jetzt kann er genauso wie du einen Blogpost schreiben, den Blog backen, auf Github deployen und den Quellcode in den master-Branch deines Repositories pushen. Wiederhole diesen Schritt für alle Leute, die du gern in deinem Blog schreiben lassen möchtest.

Happy Collaborative Blogging!

PS: Ich finde Octopress in Kombination mit den Funktionen von GitHub und Github Pages kann man durchaus als Alternative zu manch einem CMS sehen, da Nutzer- und Versionsverwaltung von git/Github einfach genutzt werden können. Was denkt ihr?