# Webové stránky KITTV

Stránky jsou postavené na generátoru [Zola](https://www.getzola.org/).

## Instalace generátoru

Instalaci generátoru lze provést z oficiálních repozitářů systému, nebo manuální kompilací. Ke kompilaci je třeba mít připravený rust toolchain, respektive nainstalované `cargo`.

```
git clone https://github.com/getzola/zola
cd zola
cargo build --release
cp target/release/zola /usr/local/bin/
```

## Vývoj a generování

Pro testování a vývoji na lokálním web serveru stačí spustit `zola serve`. Ke stránkám pak lze přistupovat na adrese `http://127.0.0.1:1111/` nebo `http://localhost:1111/`. Zola sleduje změny a automaticky provádí regeneraci obsahu.

Pro vygenerování statického obsahu (pro nasazení na web server) je třeba spustit `zola build`. Výsledný obsah je uložen do složky `public`.

## Deployment

Z tohoto repozitáře (master branch) je nastaven automatický deployment na webserver. V tuto chvíli neprobíhá kontrola kódu a spoléhá se na to, že commitnutý kód je validní.

Repozitář má nastaven *post-receive* hook:

```sh
#!/bin/sh

nohup ash -c ' \
    eval "$(ssh-agent -s)" && \
    ssh-add -t 60 ~/.ssh/id_repository && \
    ssh gitea@it-new.pedf.cuni.cz "/home/gitea/deployment.sh" && \
    trap "ssh-agent -k" EXIT \
' > /dev/null 2>&1 &

echo "Automatic deployment started."
```

Ten na serveru spouští skript `deployment.sh`:

```sh
#!/bin/sh

eval "$(ssh-agent -s)" && \
ssh-add -t 60 ~/.ssh/id_deploy && \
git clone gitea@git.microlab.space:kittv/web.git kittv-web && \
zola -r ~/kittv-web/ build && \
rsync -r ~/kittv-web/public/* /home/www/web-kittv/ && \
trap "ssh-agent -k" EXIT

date >> ~/deployment_log.txt

rm -rf ~/kittv-web
```

Přístup do repozitáře je ověřován pomocí tzv. *deploy keys*, tedy SSH klíčem.

## Dokumentace

- [Zola](https://www.getzola.org/documentation/) (generátor)
- [Tera](https://tera.netlify.app/docs/) (template engine)
- [CommonMark](https://commonmark.org/help/) (markdown syntax)

### Odkazy na použité technologie

- [Zola](https://github.com/getzola/zola/releases/) (releases in GitHub)
- [Remix Icon](https://remixicon.com)
- [Remix Icon](https://github.com/Remix-Design/RemixIcon) (GitHub)
