Gitlab runner na RaspberryPi

(publikováno 23.03.2022) 1 Git, Linux

Důvodů, proč si zprovoznit Gitlab Runner na vlastním stroji může být více. Zde je návod, jak runner zprovoznit na RaspberryPi. A to včetně Dockeru, který bude nejspíše také potřeba.

Gitlab runner na RaspberryPi

Article in English can be found on dev.to/arxeiss/gitlab-runner-on-raspberry-pi-2p7h

Instalaci Raspberry Pi OS nejspíše všichni zvládnou. Není to nic složitého, ale pro nováčky to raději popíšu. Stačí si na stránkách raspberrypi.com/software stáhnout Raspberry Pi Imager. Po spuštění vybrat doporučenou variantu operačního systému, zvolit cílovou SD kartu a spustit zápis. Poté vložit kartu do Raspberry a připojit napájení. Po naběhnutí vyskočí poinstalační průvodce, který dovolí změnit heslo, připojit se k WiFi a provést aktualizaci. Vše doporučuji udělat.

Instalace Raspberry Pi OS na SD kartu

Instalace Dockeru není nutná, pokud se využije pipeline bez image parametru. Podle toho se i dále vybere executor při registraci runneru. Jako například shell nebo ssh apod.

Instalace Dockeru a gitu

Docker bude s největší pravděpodobností potřeba, git je nezbytností. Naštěstí git by měl být již předinstalován, takže stačí spusti git --version a ověřit si, že vše funguje. Přesto, že instalace přes základní balíčkovací nástroj apt je preferovaná, pro Raspberry nefunguje a je nutné použít Convenience script. Ten lze stáhnout a spustit pomocí příkazu níže. Protože Docker vyžaduje root práva, je vhodné přidat aktuálního uživatele do docker skupiny, opět pomocí příkazu níže.

# Stáhne convenience script a spustí instalaci
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Přidání aktuálního uživatele do docker skupiny práv
sudo groupadd docker # Nejspíše vrátí chybu, že skupina existuje
sudo usermod -aG docker ${USER}
groups ${USER} # Vypíše všechny skupiny, do kterých uživatel patří

Instalace Dockeru a přidání uživatele do skupiny

Po restartu je možné otestovat, že Docker funguje pomocí příkazu docker run hello-world. Ten stáhne a spustí hello-world image, který jen vypíše na obrazovku text. Pro ověření ale stačí.

Instalace Gitlab runneru

Gitlab runner se instaluje pomocí skriptu, podobě jako Docker. Instalační skript ovšem skončí chybou, že daná distribuce není podporována. Raspberry Pi OS sice vychází z distribuce Debian, má ale vlastní označení. Proto je potřeba přepsat některé vstupní proměnné skriptu.

# Vypíše aktuální verzi systému
cat /etc/os-release
# Proměnnou os a dist upravit podle výpisu z příkazu výše
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo os=debian dist=bullseye bash
# Nyní lze runner nainstalovat
sudo apt install gitlab-runner

Přidání Gitlab APT repozitáře

Registrace Gitlab runneru

Posledním krokem je registrace runneru. Jedna instalace dokáže obsluhovat klidně více runnerů pro různé repozitáře či celé skupiny projektů. Prvním krokem je zkopírování registračního tokenu v nastavení CI/CD skupiny nebo projektu. Výhodné taky může být zakázání sdílených runnerů.

Zkopírování registračního tokenu z Gitlabu

Pro registraci stačí spustit příkaz  sudo gitlab-runner register. Ten se zeptá na několik parametrů a při dotazu na vybrání executora zadat docker. Toto platí ve většině případů.

Registrace Gitlab runneru

Problém s vlastním Docker image

Použití vlastních Docker image může být na runneru na Raspberry Pi problematické. Většina běžných PC obsahuje procesor s architekturou amd64 zatímco Raspberry používá ARM procesory. Takže výsledný Docker image bude vytvořen pro amd64 a na Raspberry nepojede. Je proto potřeba image buildit přímo na Rapsberry, nebo použít rozšíření buildx. Jak provést build pro více platforem je možné okoukat například v mém repozitáři Docker FTP Deployer.


Vlastní zkušenosti s Raspberry Pi a Gitlab či jiným runnerem můžete sdílet v komentářích.

K tomuto článku již není možné přidávat další komentáře

Komentáře

Narazil jsem nejdřív na anglickou verzi článku a měl jsem fakt radost když jsem našel link na českou verzi . Gitlab runner běží. Díky moc