diff --git a/install-gitea-runner.sh b/install-gitea-runner.sh index 1be011a..ed83a74 100644 --- a/install-gitea-runner.sh +++ b/install-gitea-runner.sh @@ -35,6 +35,23 @@ RUNNER_USER="gitea-runner" INSTALL_DIR="/opt/gitea-runner" BIN_PATH="/usr/local/bin/gitea-runner" SERVICE_PATH="/etc/systemd/system/gitea-runner.service" +WORK_DIR="$INSTALL_DIR/work" +CONFIG_PATH="$INSTALL_DIR/config.yaml" + +############################################ +# Cleanup +############################################ + +CLEANUP_SCRIPT="/usr/local/sbin/gitea-runner-cleanup" +CLEANUP_SERVICE="/etc/systemd/system/gitea-runner-cleanup.service" +CLEANUP_TIMER="/etc/systemd/system/gitea-runner-cleanup.timer" + +############################################ +# Versions +############################################ + +ACT_RUNNER_VERSION="0.2.13" +GO_VERSION="1.22.10" ############################################ # Helpers @@ -73,7 +90,7 @@ fi # Remove Snap Docker (If Present) ############################################ -if command -v snap >/dev/null && snap list | grep -q docker; then +if command -v snap >/dev/null && snap list 2>/dev/null | grep -q '^docker '; then warn "Snap Docker detected. Removing..." snap remove --purge docker || true rm -rf /var/snap/docker /snap/docker /var/lib/snapd/snaps/docker* @@ -108,7 +125,6 @@ apt install -y \ log "Installing Go..." -GO_VERSION="1.22.10" # change if you want GO_TARBALL="go${GO_VERSION}.linux-amd64.tar.gz" GO_URL="https://go.dev/dl/${GO_TARBALL}" @@ -210,8 +226,8 @@ log "Downloading Gitea runner..." TMP_FILE="/tmp/gitea-runner.bin" curl -fL --retry 5 --retry-delay 2 \ - https://dl.gitea.com/act_runner/0.2.13/act_runner-0.2.13-linux-amd64 \ - -o "$TMP_FILE" +"https://dl.gitea.com/act_runner/${ACT_RUNNER_VERSION}/act_runner-${ACT_RUNNER_VERSION}-linux-amd64" \ +-o "$TMP_FILE" # Ensure it isn’t HTML file "$TMP_FILE" | grep -qi "ELF" >/dev/null || { echo "Download failed"; exit 1; } @@ -225,11 +241,15 @@ chmod +x "$BIN_PATH" log "Registering runner..." +systemctl stop gitea-runner 2>/dev/null || true + +rm -f "$INSTALL_DIR/.runner" + # Create runner home atomically install -d -m 750 -o "$RUNNER_USER" -g "$RUNNER_USER" "$INSTALL_DIR" # Ensure work dir exists -install -d -m 750 -o "$RUNNER_USER" -g "$RUNNER_USER" "$INSTALL_DIR/work" +install -d -m 750 -o "$RUNNER_USER" -g "$RUNNER_USER" "$WORK_DIR" # Remove any stale identity rm -f "$INSTALL_DIR/.runner" @@ -248,6 +268,19 @@ cd "$INSTALL_DIR" --labels "docker,linux,amd64,krkn-builder" EOF +############################################ +# Create runner config +############################################ + +runuser -u "$RUNNER_USER" -- bash < "$CONFIG_PATH" +EOF + +chown "$RUNNER_USER:$RUNNER_USER" "$CONFIG_PATH" +chmod 640 "$CONFIG_PATH" + ############################################ # Create systemd Service ############################################ @@ -259,6 +292,7 @@ cat > "$SERVICE_PATH" < "$CLEANUP_SCRIPT" < "$CLEANUP_SERVICE" < "$CLEANUP_TIMER" <