Uživatelské nástroje

Nástroje pro tento web


navody:server:gitlab_runner

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
navody:server:gitlab_runner [2018/06/17 12:42] – Aktulizované odkazy, které nevyprší paroleknavody:server:gitlab_runner [2018/09/30 15:22] (aktuální) – odstraněno Aither
Řádek 1: Řádek 1:
-====== GitLab Runner ====== 
-Pokud chcete používat GitLab Runner s Docker executorem na vpsAdminOS, nejprve si nainstalujte [[navody:vps:vpsadminos:docker|Docker podle našeho návodu]] a GitLab runner podle 
-[[https://docs.gitlab.com/runner/install/|oficiálního návodu]]. 
  
-Aby se Docker kontejnery připojily k internetu, je potřeba použít vlastní síť (viz //bridge-coi// 
-v [[navody:vps:vpsadminos:docker|návodu]]). Potom je nutné o této síti říci runneru, do 
-''/etc/gitlab-runner/config.toml'' doplňte následující: 
- 
-<code> 
-[[runners]] 
-  ... 
-  [runners.docker] 
-    ... 
-    network_mode = "bridge-coi" 
-</code> 
- 
-Ve vlastní síti ovšem správně nefunguje linkování služeb ke kontejneru s testy/buildem. 
-Ověřeny byly dvě možné řešení: používat výchozí síť dockeru a upravit si ji, nebo 
-patchnout GitLab Runner, aby linkování správně nastavil. 
- 
- 
-===== Úprava výchozí sítě ===== 
-Docker nad výchozím bridge nastavuje ''MASQUERADE'' a my potřebujeme ''SNAT''. Nevím 
-o tom, že by to šlo v Dockeru přenastavit, takže iptables upravujeme skriptem po 
-spuštění ''docker.service''. Vytvořte/upravte ''/etc/systemd/system/docker.service.d/override.conf'' 
-a doplňte následující: 
- 
-<code> 
-[Service] 
-ExecStartPost=/usr/local/bin/docker-patch-default-network <veřejná IPv4 VPS> 
-</code> 
- 
-Nyní vytvoříme ten skript: 
- 
-<code> 
-cat <<EOF > /usr/local/bin/docker-patch-default-network 
-#!/bin/sh 
- 
-if [ $# != 1 ] ; then 
-        echo "Usage: $0 <public IPv4 address>" 
-        exit 1 
-fi 
- 
-ip=$1 
- 
-ORIG_RULE="POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE" 
-NEW_RULE="POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j SNAT --to-source $ip" 
- 
-rule_exists() { 
-        local rule="$1" 
- 
-        if $(iptables-save | grep -q "$rule") ; then 
-                echo y 
-        else 
-                echo n 
-        fi 
-} 
- 
-while true ; do 
-        orig_exists=$(rule_exists "$ORIG_RULE") 
-        new_exists=$(rule_exists "$NEW_RULE") 
- 
-        if [ "$orig_exists" == "y" ] ; then 
-                iptables -t nat -D $ORIG_RULE 
-                [ "$new_exists" == "n" ] && iptables -t nat -A $NEW_RULE 
-                exit 0 
- 
-        elif [ "$new_exists" == "y" ] ; then 
-                exit 0 
- 
-        else 
-                sleep 1 
-                continue 
-        fi 
-done 
-EOF 
- 
-chmod +x /usr/local/bin/docker-patch-default-network 
-</code> 
- 
-Zbývá už jen restartovat Docker: 
- 
-<code> 
-systemctl daemon-reload 
-systemctl restart docker.service 
-</code> 
- 
-===== Patch GitLab Runneru ===== 
-Pokud chcete používat vlastní docker network a mít v kontejneru dostupné služby, 
-nezbývá než opravit GitLab Runner. Tento [[https://paste.vpsfree.cz/toJ5VNmM/|patch]] 
-aplikujte vůči https://gitlab.com/gitlab-org/gitlab-runner. Je to opravdu skvělý 
-zážitek, pro Fedoru 28 vypadá build takto: 
- 
-<code> 
-make RPM_PLATFORMS=fedora/28 RPM_ARCHS=x86_64 DEB_PLATFORMS= BUILD_PLATFORMS="-os linux -arch amd64" 
-make package-rpm-fpm ARCH=amd64 PACKAGE_ARCH=amd64 
-</code> 
- 
-Výsledný balíček pak stačí nainstalovat: 
- 
-<code> 
-dnf install out/rpm/gitlab-runner_amd64.rpm 
-</code> 
- 
-Další možností instalace je stáhnout zkompilovaný balíček pro Fedoru 28, Ubuntu 18.04, který je již zkompilovaný s výše uvedeným patchem: 
- 
-Fedora 28 
-[[https://gitlab.com/petrparolek/gitlab-runner/-/jobs/75415294/artifacts/download]] 
- 
-Ubuntu 18.04 
-[[https://gitlab.com/petrparolek/gitlab-runner/-/jobs/75415293/artifacts/download]]