#!/bin/bash # ================================================================ # install-gitea-runner.sh # Installation automatisée d'un runner Gitea Actions # # Usage: # ./install-gitea-runner.sh # # Exemple: # ./install-gitea-runner.sh abc123 "dev-lab" "self-hosted,lab,docker,obsigate" # ================================================================ set -e TOKEN="$1" NAME="$2" LABELS="$3" if [ -z "$TOKEN" ] || [ -z "$NAME" ] || [ -z "$LABELS" ]; then echo "❌ Usage: ./install-gitea-runner.sh " echo " Example: ./install-gitea-runner.sh abc123 dev-lab 'self-hosted,lab,docker,obsigate'" exit 1 fi echo "=============================================" echo " Gitea Runner Installer" echo " Server : $NAME" echo " Labels : $LABELS" echo "=============================================" echo "" # ── 1. Detect OS ───────────────────────────────────────────────── if [ -f /etc/alpine-release ]; then OS="alpine" elif [ -f /etc/debian_version ]; then OS="debian" elif [ -f /etc/arch-release ]; then OS="arch" else echo "⚠️ Unknown OS — assuming Debian-based" OS="debian" fi echo "🖥️ Detected OS: $OS" # ── 2. Ensure Docker ───────────────────────────────────────────── echo "[1/4] Checking Docker..." if ! command -v docker &>/dev/null; then echo " Installing Docker..." if [ "$OS" = "alpine" ]; then apk add --no-cache docker curl rc-update add docker boot service docker start elif [ "$OS" = "debian" ]; then sudo apt-get update -qq sudo apt-get install -y -qq docker.io curl sudo usermod -aG docker "$USER" elif [ "$OS" = "arch" ]; then sudo pacman -S --noconfirm docker curl sudo systemctl enable --now docker sudo usermod -aG docker "$USER" fi fi echo " ✅ Docker OK" # ── 3. Download & install runner ────────────────────────────────── echo "[2/4] Downloading Gitea act_runner..." ARCH=$(uname -m) case "$ARCH" in x86_64) RUNNER_ARCH="amd64" ;; aarch64) RUNNER_ARCH="arm64" ;; armv7l) RUNNER_ARCH="armv7" ;; *) echo "❌ Unsupported architecture: $ARCH"; exit 1 ;; esac RUNNER_URL="https://dl.gitea.com/act_runner/act_runner-linux-${RUNNER_ARCH}" sudo curl -sL -o /usr/local/bin/act_runner "$RUNNER_URL" sudo chmod +x /usr/local/bin/act_runner echo " ✅ act_runner installed ($(/usr/local/bin/act_runner --version 2>&1 | head -1))" # ── 4. Register ─────────────────────────────────────────────────── echo "[3/4] Registering runner with Gitea..." /usr/local/bin/act_runner register \ --instance https://git.dracodev.net \ --token "$TOKEN" \ --name "$NAME" \ --labels "$LABELS" \ --no-interactive echo " ✅ Runner registered" # ── 5. Install as service ──────────────────────────────────────── echo "[4/4] Installing as system service..." if [ "$OS" = "alpine" ]; then # Alpine OpenRC sudo tee /etc/init.d/gitea-runner > /dev/null < /dev/null <&1 | head -3 else sudo systemctl status gitea-runner --no-pager -l 2>&1 | head -5 fi echo "" echo "=============================================" echo " ✅ Runner '$NAME' installed successfully!" echo " Labels : $LABELS" echo " Vérifier dans Gitea → Admin → Runners" echo "============================================="