Files
xiaoxia-saas/scripts/fix_runners_on_new_server.sh
T
2026-07-13 17:51:38 +08:00

99 lines
2.6 KiB
Bash

#!/bin/bash
# 新服务器上执行:把5个全局Runner改成saas仓库级 + host模式 + 注册第6个
set -e
GITEA_URL="https://git.xiaoxiajianji.com/"
REG_TOKEN="ZMFH02WcdElay5ATmhhQYe1WNTESO9XMXcF0H9Tj"
RUNNER_DIR="/opt/act-runner"
echo "=== 1. Stop all runner services ==="
for i in 1 2 3 4 5; do
systemctl stop gitea-runner-$i 2>/dev/null || true
echo "stopped runner-$i"
done
echo ""
echo "=== 2. Show current config ==="
grep -E "mode:|labels:" $RUNNER_DIR/runner-1/config.yml 2>/dev/null || echo "no config.yml found"
echo ""
echo "=== 3. Check act_runner version ==="
$RUNNER_DIR/runner-1/act_runner --version 2>&1 || echo "version check failed"
echo ""
echo "=== 4. Deactivate old global runners ==="
for i in 1 2 3 4 5; do
cd $RUNNER_DIR/runner-$i
if [ -f .runner ]; then
./act_runner deactivate 2>&1 || true
rm -f .runner
echo "deactivated runner-$i"
else
echo "runner-$i no .runner file, skipping deactivate"
fi
done
echo ""
echo "=== 5. Change config to host mode ==="
for i in 1 2 3 4 5; do
if [ -f $RUNNER_DIR/runner-$i/config.yml ]; then
sed -i "s/mode: docker/mode: host/g" $RUNNER_DIR/runner-$i/config.yml
sed -i "s/container_mode: docker/container_mode: host/g" $RUNNER_DIR/runner-$i/config.yml
echo "runner-$i config updated"
fi
done
echo ""
echo "=== 6. Create runner-6 ==="
mkdir -p $RUNNER_DIR/runner-6
cp $RUNNER_DIR/runner-1/act_runner $RUNNER_DIR/runner-6/
cp $RUNNER_DIR/runner-1/config.yml $RUNNER_DIR/runner-6/
# 确保host模式
sed -i "s/mode: docker/mode: host/g" $RUNNER_DIR/runner-6/config.yml 2>/dev/null || true
echo ""
echo "=== 7. Register all 6 as repo-level saas runners ==="
for i in 1 2 3 4 5 6; do
cd $RUNNER_DIR/runner-$i
./act_runner register \
--instance "$GITEA_URL" \
--token "$REG_TOKEN" \
--name "saas-runner-$i" \
--labels "saas,runtime-builder,host,ubuntu-latest,ubuntu-22.04" \
--no-interactive 2>&1
echo "registered runner-$i, exit=$?"
done
echo ""
echo "=== 8. Create systemd services ==="
for i in 1 2 3 4 5 6; do
cat > /etc/systemd/system/gitea-runner-$i.service << EOF
[Unit]
Description=Gitea Actions Runner $i
After=network.target
[Service]
WorkingDirectory=$RUNNER_DIR/runner-$i
ExecStart=$RUNNER_DIR/runner-$i/act_runner daemon
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable gitea-runner-$i
systemctl start gitea-runner-$i
echo "started runner-$i"
done
echo ""
echo "=== 9. Wait and check status ==="
sleep 5
systemctl status gitea-runner-{1,2,3,4,5,6} --no-pager | head -40
echo ""
echo "=== DONE ==="