#!/usr/bin/env bash # Re-points the existing LAN dev self-hosted runner from GitHub Actions to # Forgejo Actions. Run on the SAME machine that already runs the GitHub # runner (see DEPLOY-DEV.md) — this replaces that runner, it doesn't add a # second one. Sudo-free, systemd --user, same pattern as the app service. # # bash deploy/forgejo/register-lan-runner.sh # # Get from the Forgejo web UI: # repo -> Settings -> Actions -> Runners -> Create new Runner # (or an org/instance-level runner page, if you want it to serve more than # this one repo — same as the GitHub runner did). set -euo pipefail FORGEJO_URL="${1:?usage: $0 }" TOKEN="${2:?}" RUNNER_DIR="${RUNNER_DIR:-$HOME/forgejo-runner}" LABELS="${LABELS:-thermograph-lan}" echo "==> Stopping and disabling the old GitHub Actions runner service, if present" systemctl --user stop github-actions-runner 2>/dev/null || true systemctl --user disable github-actions-runner 2>/dev/null || true echo "==> Installing forgejo-runner into $RUNNER_DIR" mkdir -p "$RUNNER_DIR" cd "$RUNNER_DIR" if [ ! -x ./forgejo-runner ]; then ARCH="$(uname -m)" case "$ARCH" in x86_64) BIN_ARCH=amd64 ;; aarch64) BIN_ARCH=arm64 ;; *) echo "Unsupported arch: $ARCH — download the right binary by hand from" \ "https://code.forgejo.org/forgejo/runner/releases" >&2; exit 1 ;; esac VER="${FORGEJO_RUNNER_VERSION:-6.3.1}" curl -fsSL -o forgejo-runner \ "https://code.forgejo.org/forgejo/runner/releases/download/v${VER}/forgejo-runner-${VER}-linux-${BIN_ARCH}" chmod +x forgejo-runner fi echo "==> Registering with $FORGEJO_URL (label: $LABELS)" ./forgejo-runner register --no-interactive \ --instance "$FORGEJO_URL" \ --token "$TOKEN" \ --name "thermograph-lan-$(hostname -s)" \ --labels "$LABELS" echo "==> systemd --user unit" mkdir -p "$HOME/.config/systemd/user" cat > "$HOME/.config/systemd/user/forgejo-runner.service" </dev/null || true cat <