Загрузить файлы в «/»
This commit is contained in:
116
install.sh
Normal file
116
install.sh
Normal file
@@ -0,0 +1,116 @@
|
||||
#!/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="School25"
|
||||
|
||||
# --- 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
|
||||
Reference in New Issue
Block a user