Files
act_runner/install.sh
2026-04-17 13:38:29 +05:00

116 lines
3.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ================================================================= #
# SMART INSTALLER: ACT_RUNNER + SYSTEMD + SYSTEM LABELS (STRICT MODE)
# ================================================================= #
set -e # прерывать выполнение при любой ошибке
# --- Конфигурация ---
WORK_DIR="/opt/act_runner"
EXE_URL="https://git.dadehard.ru/kalugin66/act_runner/raw/branch/main/act_runner-0.4.0-linux-amd64"
INSTANCE_URL="https://git.dadehard.ru/"
TOKEN="UzVNobPFBJe8ZoQXwu5ZamfgqCpTJZGR3LDVnX7N"
SERVICE_NAME="act_runner"
DEFAULT_LABEL="sber"
# --- 1. Сбор системной информации ---
HOSTNAME=$(hostname -s)
ARCH="linux-amd64"
MEM_TOTAL_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}')
MEM_GB=$(( MEM_TOTAL_KB / 1024 / 1024 ))
MEM_LABEL="${MEM_GB}GB_RAM"
# Формируем список меток (аналогично Windows-версии)
FULL_LABELS="$DEFAULT_LABEL:host,linux-amd64:host,self-hosted:host,$HOSTNAME:host,$ARCH:host,$MEM_LABEL:host"
echo "--- Данные системы: ПК=$HOSTNAME, ОЗУ=$MEM_LABEL, Метка=$DEFAULT_LABEL ---"
# --- 2. Подготовка окружения ---
if [ ! -d "$WORK_DIR" ]; then
sudo mkdir -p "$WORK_DIR"
fi
cd "$WORK_DIR"
# --- 3. Остановка и удаление старой службы (если есть) ---
echo "--- Шаг 1: Очистка ---"
sudo systemctl stop "$SERVICE_NAME" 2>/dev/null || true
sudo systemctl disable "$SERVICE_NAME" 2>/dev/null || true
sudo rm -f "/etc/systemd/system/${SERVICE_NAME}.service"
sudo systemctl daemon-reload
# --- 4. Загрузка бинарного файла ---
echo "--- Шаг 2: Загрузка act_runner ---"
if [ ! -f "$WORK_DIR/act_runner" ]; then
sudo wget -q --show-progress -O act_runner "$EXE_URL"
sudo chmod +x act_runner
fi
# --- 5. Создание конфигурационного файла config.yaml ---
echo "--- Шаг 3: Формирование конфига ---"
sudo tee "$WORK_DIR/config.yaml" > /dev/null <<EOF
log:
level: info
runner:
file: .runner
capacity: 1
labels:
- "${DEFAULT_LABEL}:host"
- "linux-amd64:host"
- "self-hosted:host"
- "${HOSTNAME}:host"
- "${ARCH}:host"
- "${MEM_LABEL}:host"
container:
force_pull: false
host:
workdir: ""
EOF
# --- 6. Регистрация раннера (если ещё не зарегистрирован) ---
echo "--- Шаг 4: Авторизация в Gitea ---"
if [ ! -f "$WORK_DIR/.runner" ]; then
echo "Регистрация нового раннера..."
sudo ./act_runner register \
--instance "$INSTANCE_URL" \
--token "$TOKEN" \
--no-interactive \
--name "$HOSTNAME" \
--labels "$FULL_LABELS"
fi
# --- 7. Создание systemd-сервиса ---
echo "--- Шаг 5: Установка службы systemd ---"
sudo tee "/etc/systemd/system/${SERVICE_NAME}.service" > /dev/null <<EOF
[Unit]
Description=Gitea Act Runner
After=network.target
[Service]
Type=simple
WorkingDirectory=${WORK_DIR}
ExecStart=${WORK_DIR}/act_runner daemon --config ${WORK_DIR}/config.yaml
Restart=always
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable "$SERVICE_NAME"
# --- 8. Запуск службы ---
echo "--- Шаг 6: Запуск ---"
sudo systemctl start "$SERVICE_NAME"
# --- 9. Проверка статуса ---
if systemctl is-active --quiet "$SERVICE_NAME"; then
echo "==============================================="
echo "ГОТОВО! Раннер активен с меткой $DEFAULT_LABEL"
echo "==============================================="
else
echo "Ошибка: служба не запустилась. Проверьте журнал: journalctl -u $SERVICE_NAME"
exit 1
fi