v5: local register on new server
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
#!/bin/sh
|
||||
# 通过Docker nsenter进入宿主机,判断是否新服务器,是就本地注册
|
||||
|
||||
docker run --rm --privileged --pid=host alpine nsenter -t 1 -m -u -n -i sh << 'HOSTCMD'
|
||||
set +e
|
||||
|
||||
echo "=== Host Info ==="
|
||||
hostname
|
||||
echo "IPs:"
|
||||
ip -4 addr show | grep inet | awk '{print $2}'
|
||||
|
||||
# 判断是不是新服务器:有 /opt/act-runner/runner-5 目录,且hostname包含特定特征
|
||||
IS_NEW_SERVER=0
|
||||
if [ -d "/opt/act-runner/runner-5" ]; then
|
||||
IS_NEW_SERVER=1
|
||||
echo "DETECTED: NEW CI SERVER (has 5 runner dirs)"
|
||||
elif hostname | grep -qi "new\|runner\|ci"; then
|
||||
# 其他判断条件
|
||||
echo "POSSIBLE new server based on hostname"
|
||||
fi
|
||||
|
||||
if [ "$IS_NEW_SERVER" -eq 0 ]; then
|
||||
echo "NOT the new server, skipping registration"
|
||||
echo "Looking for act_runner..."
|
||||
find /opt /var -name act_runner -type f 2>/dev/null | head -5
|
||||
echo "DONE (skipped)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Finding act_runner binary ==="
|
||||
ACT_RUNNER=""
|
||||
for p in /opt/act-runner/runner-1/act_runner /opt/act-runner/runner-2/act_runner /usr/local/bin/act_runner; do
|
||||
if [ -f "$p" ]; then
|
||||
ACT_RUNNER="$p"
|
||||
echo "Found: $p"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$ACT_RUNNER" ]; then
|
||||
echo "Searching whole system..."
|
||||
ACT_RUNNER=$(find /opt /usr -name act_runner -type f 2>/dev/null | head -1)
|
||||
fi
|
||||
|
||||
if [ -z "$ACT_RUNNER" ]; then
|
||||
echo "ERROR: act_runner not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Version: $($ACT_RUNNER --version 2>&1)"
|
||||
|
||||
echo ""
|
||||
echo "=== Registering 6 SAAS repo-level runners ==="
|
||||
|
||||
REPO_TOKEN="ZMFH02WcdElay5ATmhhQYe1WNTESO9XMXcF0H9Tj"
|
||||
GITEA_URL="https://git.xiaoxiajianji.com"
|
||||
BASE_DIR="/opt/act-runner"
|
||||
|
||||
for i in 6 7 8 9 10 11; do
|
||||
RUNNER_DIR="${BASE_DIR}/saas-runner-${i}"
|
||||
echo "--- saas-runner-${i} ---"
|
||||
|
||||
# 如果已经注册过就跳过
|
||||
if [ -f "${RUNNER_DIR}/.runner" ]; then
|
||||
echo "Already registered, skipping"
|
||||
continue
|
||||
fi
|
||||
|
||||
mkdir -p "$RUNNER_DIR"
|
||||
cd "$RUNNER_DIR"
|
||||
|
||||
$ACT_RUNNER register \
|
||||
--instance "$GITEA_URL" \
|
||||
--token "$REPO_TOKEN" \
|
||||
--name "saas-runner-${i}" \
|
||||
--labels "saas,runtime-builder,host,ubuntu-latest" \
|
||||
--no-interactive 2>&1
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Registration SUCCESS"
|
||||
else
|
||||
echo "Registration FAILED"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 创建systemd服务
|
||||
cat > /etc/systemd/system/gitea-saas-runner-${i}.service << EOF
|
||||
[Unit]
|
||||
Description=Gitea Actions SAAS Runner ${i}
|
||||
After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=${RUNNER_DIR}
|
||||
ExecStart=${ACT_RUNNER} daemon
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
User=root
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload 2>&1
|
||||
systemctl enable gitea-saas-runner-${i} 2>&1
|
||||
systemctl start gitea-saas-runner-${i} 2>&1
|
||||
echo "Started gitea-saas-runner-${i}"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "=== VERIFICATION ==="
|
||||
echo "Systemd services:"
|
||||
systemctl list-units --type=service | grep -i gitea
|
||||
echo ""
|
||||
echo "Runner directories:"
|
||||
ls -la /opt/act-runner/ | grep saas
|
||||
|
||||
echo ""
|
||||
echo "=== REGISTRATION COMPLETE ==="
|
||||
HOSTCMD
|
||||
Reference in New Issue
Block a user