temp: expand runner to 3 instances

This commit is contained in:
xiaoxia
2026-07-12 00:01:03 +08:00
commit 0e2d90da5c
+125
View File
@@ -0,0 +1,125 @@
name: Runner Expander
on: push
jobs:
expand:
runs-on: host
steps:
- name: Expand to 3 runner instances
run: |
set +e
echo "=== 当前runner进程数: $(ps aux | grep 'act_runner daemon' | grep -v grep | wc -l) ==="
# 注册 runner-2
if [ ! -f /var/lib/xiaoxia-ci-runner-2/.runner ]; then
mkdir -p /var/lib/xiaoxia-ci-runner-2
cp /var/lib/xiaoxia-ci/act_runner /var/lib/xiaoxia-ci-runner-2/act_runner
chmod +x /var/lib/xiaoxia-ci-runner-2/act_runner
cat > /var/lib/xiaoxia-ci-runner-2/.runner-config.yaml << 'CFG'
log:
level: info
runner:
file: .runner
capacity: 1
timeout: 3h
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels:
- runtime-builder
- ubuntu-latest
- host
cache:
enabled: true
dir: /var/lib/xiaoxia-ci-runner-2/cache
host:
workdir_parent: /var/lib/xiaoxia-ci-runner-2/workspace
container:
network: host
CFG
TOK=$(python3 -c "import json; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['token'])")
ADDR=$(python3 -c "import json; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['address'])")
cd /var/lib/xiaoxia-ci-runner-2
./act_runner register --instance "$ADDR" --token "$TOK" --name "xiaoxia-ci-runner-2" --labels "runtime-builder:host,ubuntu-latest:host,host:host" --no-interactive 2>&1
fi
# 注册 runner-3
if [ ! -f /var/lib/xiaoxia-ci-runner-3/.runner ]; then
mkdir -p /var/lib/xiaoxia-ci-runner-3
cp /var/lib/xiaoxia-ci/act_runner /var/lib/xiaoxia-ci-runner-3/act_runner
chmod +x /var/lib/xiaoxia-ci-runner-3/act_runner
cat > /var/lib/xiaoxia-ci-runner-3/.runner-config.yaml << 'CFG'
log:
level: info
runner:
file: .runner
capacity: 1
timeout: 3h
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels:
- runtime-builder
- ubuntu-latest
- host
cache:
enabled: true
dir: /var/lib/xiaoxia-ci-runner-3/cache
host:
workdir_parent: /var/lib/xiaoxia-ci-runner-3/workspace
container:
network: host
CFG
TOK=$(python3 -c "import json; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['token'])")
ADDR=$(python3 -c "import json; print(json.load(open('/var/lib/xiaoxia-ci/.runner'))['address'])")
cd /var/lib/xiaoxia-ci-runner-3
./act_runner register --instance "$ADDR" --token "$TOK" --name "xiaoxia-ci-runner-3" --labels "runtime-builder:host,ubuntu-latest:host,host:host" --no-interactive 2>&1
fi
# systemd 服务
cat > /etc/systemd/system/act_runner-2.service << 'SVC'
[Unit]
Description=Gitea Actions Runner 2
After=gitea.service network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/xiaoxia-ci-runner-2
ExecStart=/var/lib/xiaoxia-ci-runner-2/act_runner daemon --config .runner-config.yaml
Restart=always
RestartSec=5s
User=root
[Install]
WantedBy=multi-user.target
SVC
cat > /etc/systemd/system/act_runner-3.service << 'SVC'
[Unit]
Description=Gitea Actions Runner 3
After=gitea.service network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/xiaoxia-ci-runner-3
ExecStart=/var/lib/xiaoxia-ci-runner-3/act_runner daemon --config .runner-config.yaml
Restart=always
RestartSec=5s
User=root
[Install]
WantedBy=multi-user.target
SVC
systemctl daemon-reload
systemctl enable act_runner-2.service act_runner-3.service 2>&1
systemctl start act_runner-2.service 2>&1
systemctl start act_runner-3.service 2>&1
sleep 10
echo ""
echo "=== 验证 ==="
echo "进程数: $(ps aux | grep 'act_runner daemon' | grep -v grep | wc -l)"
ps aux | grep 'act_runner daemon' | grep -v grep
echo ""
systemctl is-active act_runner.service act_runner-2.service act_runner-3.service 2>&1
echo ""
for d in /var/lib/xiaoxia-ci /var/lib/xiaoxia-ci-runner-2 /var/lib/xiaoxia-ci-runner-3; do
[ -f "$d/.runner" ] && python3 -c "import json; d=json.load(open('$d/.runner')); print(f' {d[\"name\"]}: id={d[\"id\"]}')" 2>/dev/null
done
echo ""
echo "=== DONE ==="