v2: use nsenter to register on host
This commit is contained in:
@@ -3,11 +3,89 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
register:
|
||||
register-on-host:
|
||||
runs-on: saas
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: register-6-runners
|
||||
- name: register-6-saas-runners
|
||||
run: |
|
||||
chmod +x register_runners.sh
|
||||
bash register_runners.sh
|
||||
# 通过 nsenter 进入宿主机执行注册
|
||||
docker run --rm --privileged --pid=host alpine nsenter -t 1 -m -u -n -i sh -c '
|
||||
set -e
|
||||
echo "=== Host Info ==="
|
||||
hostname
|
||||
ls /opt/act-runner/ 2>/dev/null || echo "no /opt/act-runner"
|
||||
|
||||
# 找act_runner二进制
|
||||
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 act_runner: $p"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$ACT_RUNNER" ]; then
|
||||
echo "act_runner not found, searching..."
|
||||
find /opt -name act_runner -type f 2>/dev/null | head -5
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检测是否是新服务器(有5个以上runner目录)
|
||||
RUNNER_COUNT=$(find /opt/act-runner -maxdepth 1 -type d -name "runner-*" 2>/dev/null | wc -l)
|
||||
echo "Existing runner dirs: $RUNNER_COUNT"
|
||||
|
||||
if [ "$RUNNER_COUNT" -lt 5 ]; then
|
||||
echo "Not the new server, skipping"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "=== New server detected! Registering 6 repo-level runners ==="
|
||||
|
||||
REPO_TOKEN="ZMFH02WcdElay5ATmhhQYe1WNTESO9XMXcF0H9Tj"
|
||||
GITEA_URL="https://git.xiaoxiajianji.com"
|
||||
BASE_DIR="/opt/act-runner"
|
||||
LABELS="saas,runtime-builder,host,ubuntu-latest"
|
||||
|
||||
for i in 6 7 8 9 10 11; do
|
||||
RUNNER_DIR="${BASE_DIR}/saas-runner-${i}"
|
||||
echo "--- saas-runner-${i} ---"
|
||||
|
||||
mkdir -p "$RUNNER_DIR"
|
||||
cd "$RUNNER_DIR"
|
||||
|
||||
$ACT_RUNNER register \
|
||||
--instance "$GITEA_URL" \
|
||||
--token "$REPO_TOKEN" \
|
||||
--name "saas-runner-${i}" \
|
||||
--labels "$LABELS" \
|
||||
--no-interactive 2>&1
|
||||
|
||||
# 创建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
|
||||
systemctl enable gitea-saas-runner-${i}
|
||||
systemctl start gitea-saas-runner-${i}
|
||||
echo "Started saas-runner-${i}"
|
||||
done
|
||||
|
||||
echo "=== DONE ==="
|
||||
systemctl status gitea-saas-runner-6 --no-pager | head -10
|
||||
echo "..."
|
||||
'
|
||||
|
||||
Reference in New Issue
Block a user