GitHub Pages & Jekyll
Už delší dobu narážím na stránky projektů, které jsou hostované na doméně github.io, a tak jsem začal pátrat o co jde. Zjistil jsem, že GitHub nabízí hosting stránek pro repozitáře.
GitHub Pages podporují:
- Statické HTML stránky
- Jekyll – „CMS“ systém v Ruby, který generuje statické HTML stránky, GitHub jej podporuje nativně, a tudíž se sám stará o kompilaci obsahu vždy, když aktualizujete repozitář.
- Před-definované stránky – GitHub nabízí automatický generátor stránek s několika předefinovanými šablonami. Toto je velmi užitečné pro malé projekty či knihovny. Ovšem generátor umí vygenerovat jen jednu statickou stránku.
Osobně se již druhý den snažím zprovoznit dokumentaci k projektu na GitHubu pomocí GitHub pages a Jekyllu a konečně jsem přišel na to, jak se co dělá. Nabízím tedy stručný český návod.
#Jak fungují GitHub Pages?
GitHub nabízí dva typy hostingů:
- Stránky uživatele / organizace
- Stránky pro repozitář
#Uživatel & Organizace
Pro uživatele či organizace jsou stránky dostupné na adrese:
http://<uzivatel/organizace>.github.io/
Stránky pro uživatele či organizaci můžete publikovat tím, že vytvoříte repozitář s výše uvedeným jménem domény. Já bych tedy vytvářel repozitář s názvem: jirihybek.github.io.
#Repozitář
Pokud chcete publikovat stránky pro repozitář (projekt), je potřeba v repozitáři vytvořit větev s názvem gh-pages
.
Stránky jsou poté dostupné na adrese:
http://<uzivatel/organizace>.github.io/<repozitar>
V případě mého repozitáře s názvem downgen
by byly stránky dostupné na adrese: http://jirihybek.github.io/downgen/.
Návodů na toto téma naleznete spoustu, já se v tomto příspěvku zaměřím na použití Jekyllu.
#Používáme Jekyll
Jednoduchý systém pro správu obsahu, který generuje statické HTML stránky. Je tedy bezpečný, jednoduchý a rychlý. Ve zkratce funguje tak, že vytvoříte HTML či Markdown soubory a Jekyll je podle konfigurace „zkompiluje“ do statických HTML stránek.
Jekyll podporuje:
- Šablony
- Styly
- Pluginy
#Instalace
Jekyll je aplikace psaná v jazyce Ruby, potřebujete tedy Ruby, NodeJS a pár dalších utilit. V Ubuntu jej nainstalujete z repozitáře například pomocí následujícího příkazu.
1 | sudo apt-get install nodejs ruby-dev rubygems |
Dále je potřeba nainstalovat Jekyll a Bundler.
1 | sudo gem install bundler |
#Vytvoření projektu
Upozornění – musíme vytvořit Jekyll projekt ještě před repozitářem, jelikož cílový adresář musí být prázdný!
Projekt založíme pomocí příkazu:
1 | jekyll new moje-stranky |
Poté se přesuneme do složky s projektem:
1 | cd moje-stranky |
A vytvoříme v ní nový soubor Gemfile
, který obsahuje konfiguraci pro bundler. To nám umožní nainstalovat a spouštět verzi Jekyllu, kterou používá GitHub a tudíž nemusíme řešit problémy s kompatibilitou.
Gemfile:
1 | source 'https://rubygems.org' |
Poté spustíme bundler a nainstalujeme potřebné balíčky:
1 | bundle install |
Jekyll obsahuje webový server, který nám umožňuje lehce přistupovat k vygenerovaným stránkám a automaticky sleduje změny a poté aktualizuje statické HTML soubory.
Spustíme:
1 | bundle exec jekyll server |
Nyní můžeme v prohlížeči otevřít adresu http://localhost:4000/ a podívat se na naše stránky.
Proč spouštíme příkaz bundle exec
? Můžete též spustit Jekyll přímo pomocí jekyll serve
, avšak bundle exec
nám spustí stejnou verzi, jako používá GitHub Pages a tudíž nebudeme mít problémy s kompatibilitou.
Již můžeme server vypnout stisknutím kláves Ctrl+C
.
#Adresářová struktura stránek
Jekyll nám vygeneroval spoustu adresářů, ve kterých nalezneme různé soubory:
1 | _includes # Soubory "šablony" - hlavička, patička, apod... |
Pokud budeme vytvářet pouze „statické“ stránky, můžeme bez obav smazat následující soubory a adresáře:
1 | ./_layouts/post.html |
Úpravy šablony nechám již na vás. Je k dispozici pár pěkných šablon, které nainstalujete tak, že jen zkopírujete veškeré soubory do své lokální kopie stránek.
Pozor – šablony většinou obsahují i výchozí stránky a příspěvky, nejprve tedy použijte šablonu a až poté tvořte obsah jinak budete muset ručně zkopírovat jen vybrané soubory týkající se vzhledu a poté upravit názvy šablon v jednotlivých stránkách.
#Publikujeme stránky na GitHub
Máme funkční strukturu pro Jekyll a nyní můžeme stránky publikovat na GitHub.
#Stránky pro uživatele či organizaci
V případě, že vytváříme stránky pro GitHub uživatele či organizaci, publikujeme stránky přímo do hlavní větvě repozitáře. Založíme si tedy na GitHubu repozitář s názvem uživatele či organizace.
Poté si z naší lokální kopie stránek vytvoříme GIT repozitář:
1 | git init |
Dále přidáme soubory do repozitáře a provedeme commit:
1 | git add . |
Nyní přidáme do konfigurace vzdálený repozitář GitHubu a provedeme push.
1 | git remote add origin [email protected]:<uzivatel>/<repozitar>.git |
Napoprvé chvíli potrvá, než GitHub naše stránky publikuje, přibližně 10 minut.
#Stránky pro projekt
Jelikož musíme vytvořit v GITu novou vývojovou větev (branch) je začátek trochu komplikovanější.
V případě, že u sebe nemáme lokální repozitář projektu, stáhneme si jej:
1 | git clone <url> <nazev> |
Nyní se přesuneme do složky repozitáře a vytvoříme novou větev gh-pages
:
1 | git checkout --orphan gh-pages |
Větev musí být orphan aby byla nezávislá.
Dále smažeme veškeré soubory:
1 | git rm -rf . |
Poté všechny soubory našich Jekyllovských stránek nakopírujeme do repozitáře (kromě adresáře .git, pokud jej tam máme).
Nyní musíme upravit konfiguraci stránek a změnit proměnnou baseurl, jelikož stránky projektu leží v „pod-adresáři“ našich GitHub stránek.
Příklad úpravy _config.yml:
1 | # Site settings |
Dále přidáme soubory do repozitáře a provedeme commit:
1 | git add . |
Nakonec změny pushneme na GitHub:
1 | git push origin gh-pages |
Poprvé opět chvíli potrvá, než GitHub naše stránky publikuje.
Stránky již nyní editujeme ve větvi repozitáře.
#Závěrem
GitHub Pages jsou velmi pěkný způsob, jak zdarma publikovat informace a dokumentaci k našim projektům. Chvíli potrvá, než si na Jekyll zvyknete a vytvoříte si vlastní „base“ šablonu, kterou můžete bez obav kopírovat a vše si usnadnit.
Dále uvádím pár odkazů na užitečné zdroje:
- GitHub Pages
- Jekyll
- Šablony / témata pro Jekyll
- CSS preprocessor SASS
- Get Started With GitHub Pages (Plus Bonus Jekyll)
Doufám, že vám návod pomohl a budu rád za případné připomínky.