Update install-gitea-runner.sh
This commit is contained in:
+96
-6
@@ -35,6 +35,23 @@ RUNNER_USER="gitea-runner"
|
|||||||
INSTALL_DIR="/opt/gitea-runner"
|
INSTALL_DIR="/opt/gitea-runner"
|
||||||
BIN_PATH="/usr/local/bin/gitea-runner"
|
BIN_PATH="/usr/local/bin/gitea-runner"
|
||||||
SERVICE_PATH="/etc/systemd/system/gitea-runner.service"
|
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
|
# Helpers
|
||||||
@@ -73,7 +90,7 @@ fi
|
|||||||
# Remove Snap Docker (If Present)
|
# 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..."
|
warn "Snap Docker detected. Removing..."
|
||||||
snap remove --purge docker || true
|
snap remove --purge docker || true
|
||||||
rm -rf /var/snap/docker /snap/docker /var/lib/snapd/snaps/docker*
|
rm -rf /var/snap/docker /snap/docker /var/lib/snapd/snaps/docker*
|
||||||
@@ -108,7 +125,6 @@ apt install -y \
|
|||||||
|
|
||||||
log "Installing Go..."
|
log "Installing Go..."
|
||||||
|
|
||||||
GO_VERSION="1.22.10" # change if you want
|
|
||||||
GO_TARBALL="go${GO_VERSION}.linux-amd64.tar.gz"
|
GO_TARBALL="go${GO_VERSION}.linux-amd64.tar.gz"
|
||||||
GO_URL="https://go.dev/dl/${GO_TARBALL}"
|
GO_URL="https://go.dev/dl/${GO_TARBALL}"
|
||||||
|
|
||||||
@@ -210,8 +226,8 @@ log "Downloading Gitea runner..."
|
|||||||
TMP_FILE="/tmp/gitea-runner.bin"
|
TMP_FILE="/tmp/gitea-runner.bin"
|
||||||
|
|
||||||
curl -fL --retry 5 --retry-delay 2 \
|
curl -fL --retry 5 --retry-delay 2 \
|
||||||
https://dl.gitea.com/act_runner/0.2.13/act_runner-0.2.13-linux-amd64 \
|
"https://dl.gitea.com/act_runner/${ACT_RUNNER_VERSION}/act_runner-${ACT_RUNNER_VERSION}-linux-amd64" \
|
||||||
-o "$TMP_FILE"
|
-o "$TMP_FILE"
|
||||||
|
|
||||||
# Ensure it isn’t HTML
|
# Ensure it isn’t HTML
|
||||||
file "$TMP_FILE" | grep -qi "ELF" >/dev/null || { echo "Download failed"; exit 1; }
|
file "$TMP_FILE" | grep -qi "ELF" >/dev/null || { echo "Download failed"; exit 1; }
|
||||||
@@ -225,11 +241,15 @@ chmod +x "$BIN_PATH"
|
|||||||
|
|
||||||
log "Registering runner..."
|
log "Registering runner..."
|
||||||
|
|
||||||
|
systemctl stop gitea-runner 2>/dev/null || true
|
||||||
|
|
||||||
|
rm -f "$INSTALL_DIR/.runner"
|
||||||
|
|
||||||
# Create runner home atomically
|
# Create runner home atomically
|
||||||
install -d -m 750 -o "$RUNNER_USER" -g "$RUNNER_USER" "$INSTALL_DIR"
|
install -d -m 750 -o "$RUNNER_USER" -g "$RUNNER_USER" "$INSTALL_DIR"
|
||||||
|
|
||||||
# Ensure work dir exists
|
# 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
|
# Remove any stale identity
|
||||||
rm -f "$INSTALL_DIR/.runner"
|
rm -f "$INSTALL_DIR/.runner"
|
||||||
@@ -248,6 +268,19 @@ cd "$INSTALL_DIR"
|
|||||||
--labels "docker,linux,amd64,krkn-builder"
|
--labels "docker,linux,amd64,krkn-builder"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Create runner config
|
||||||
|
############################################
|
||||||
|
|
||||||
|
runuser -u "$RUNNER_USER" -- bash <<EOF
|
||||||
|
set -e
|
||||||
|
cd "$INSTALL_DIR"
|
||||||
|
"$BIN_PATH" generate-config > "$CONFIG_PATH"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chown "$RUNNER_USER:$RUNNER_USER" "$CONFIG_PATH"
|
||||||
|
chmod 640 "$CONFIG_PATH"
|
||||||
|
|
||||||
############################################
|
############################################
|
||||||
# Create systemd Service
|
# Create systemd Service
|
||||||
############################################
|
############################################
|
||||||
@@ -259,6 +292,7 @@ cat > "$SERVICE_PATH" <<EOF
|
|||||||
Description=Gitea Actions Runner
|
Description=Gitea Actions Runner
|
||||||
After=network-online.target docker.service
|
After=network-online.target docker.service
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
|
Requires=docker.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
@@ -266,7 +300,7 @@ User=$RUNNER_USER
|
|||||||
Group=$RUNNER_USER
|
Group=$RUNNER_USER
|
||||||
WorkingDirectory=$INSTALL_DIR
|
WorkingDirectory=$INSTALL_DIR
|
||||||
|
|
||||||
ExecStart=$BIN_PATH daemon
|
ExecStart=$BIN_PATH daemon --config $CONFIG_PATH
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
|
|
||||||
@@ -280,6 +314,56 @@ LimitNPROC=1048576
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Cleanup Script Creation
|
||||||
|
############################################
|
||||||
|
|
||||||
|
log "Creating cleanup script..."
|
||||||
|
|
||||||
|
cat > "$CLEANUP_SCRIPT" <<EOF
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
find "$WORK_DIR" -mindepth 1 -maxdepth 1 -mtime +2 -exec rm -rf {} +
|
||||||
|
|
||||||
|
docker container prune -f || true
|
||||||
|
docker network prune -f || true
|
||||||
|
docker image prune -f || true
|
||||||
|
docker builder prune -af --filter "until=48h" || true
|
||||||
|
docker volume ls -q | grep -E '^GITEA-ACTIONS-TASK-' | xargs -r docker volume rm || true
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$CLEANUP_SCRIPT"
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Cleanup Script Service
|
||||||
|
############################################
|
||||||
|
|
||||||
|
log "Creating cleanup systemd job..."
|
||||||
|
|
||||||
|
cat > "$CLEANUP_SERVICE" <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Clean Gitea runner Docker and workspace leftovers
|
||||||
|
After=docker.service
|
||||||
|
Requires=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=$CLEANUP_SCRIPT
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > "$CLEANUP_TIMER" <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Run Gitea runner cleanup daily
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=daily
|
||||||
|
Persistent=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
EOF
|
||||||
|
|
||||||
############################################
|
############################################
|
||||||
# Enable Service
|
# Enable Service
|
||||||
############################################
|
############################################
|
||||||
@@ -290,6 +374,10 @@ systemctl daemon-reload
|
|||||||
systemctl enable gitea-runner
|
systemctl enable gitea-runner
|
||||||
systemctl start gitea-runner
|
systemctl start gitea-runner
|
||||||
|
|
||||||
|
systemctl is-active --quiet gitea-runner || journalctl -u gitea-runner -n 100 --no-pager
|
||||||
|
|
||||||
|
systemctl enable --now gitea-runner-cleanup.timer
|
||||||
|
|
||||||
############################################
|
############################################
|
||||||
# Final Checks
|
# Final Checks
|
||||||
############################################
|
############################################
|
||||||
@@ -303,4 +391,6 @@ systemctl status gitea-runner --no-pager
|
|||||||
echo
|
echo
|
||||||
echo "Runner name: $RUNNER_NAME"
|
echo "Runner name: $RUNNER_NAME"
|
||||||
echo "Gitea URL: $GITEA_URL"
|
echo "Gitea URL: $GITEA_URL"
|
||||||
|
echo "Install dir: $INSTALL_DIR"
|
||||||
|
echo "Config: $CONFIG_PATH"
|
||||||
echo
|
echo
|
||||||
Reference in New Issue
Block a user