Files
act_runner/install.sh
2026-07-09 20:59:55 +05:00

116 lines
3.7 KiB
Bash
Raw 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
mkdir -p "$WORK_DIR"
fi
cd "$WORK_DIR"
# --- 3. Остановка и удаление старой службы (если есть) ---
echo "--- Шаг 1: Очистка ---"
systemctl stop "$SERVICE_NAME" 2>/dev/null || true
systemctl disable "$SERVICE_NAME" 2>/dev/null || true
rm -f "/etc/systemd/system/${SERVICE_NAME}.service"
systemctl daemon-reload
# --- 4. Загрузка бинарного файла ---
echo "--- Шаг 2: Загрузка act_runner ---"
if [ ! -f "$WORK_DIR/act_runner" ]; then
wget -q --show-progress -O act_runner "$EXE_URL"
chmod +x act_runner
fi
# --- 5. Создание конфигурационного файла config.yaml ---
echo "--- Шаг 3: Формирование конфига ---"
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 "Регистрация нового раннера..."
./act_runner register \
--instance "$INSTANCE_URL" \
--token "$TOKEN" \
--no-interactive \
--name "$HOSTNAME" \
--labels "$FULL_LABELS"
fi
# --- 7. Создание systemd-сервиса ---
echo "--- Шаг 5: Установка службы systemd ---"
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
systemctl daemon-reload
systemctl enable "$SERVICE_NAME"
# --- 8. Запуск службы ---
echo "--- Шаг 6: Запуск ---"
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