99 lines
2.6 KiB
Bash
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 ==="
|