#!/bin/bash set -e echo "===================================" echo "Gitea Runner Container Starting..." echo "===================================" # 定义路径 PERSISTENT_BIN="/data/bin" RUNNER_PATH="$PERSISTENT_BIN/act_runner" SYSTEM_LINK="/usr/local/bin/act_runner" # 创建必要目录 mkdir -p /data/runners mkdir -p "$PERSISTENT_BIN" mkdir -p /var/log/supervisor mkdir -p /var/run # 创建主 supervisor 配置文件 cat > /etc/supervisor/supervisord.conf < $RUNNER_PATH" fi # 验证版本 RUNNER_VERSION=$("$SYSTEM_LINK" --version 2>/dev/null || echo "unknown") echo " Version: $RUNNER_VERSION" elif [ -f "$SYSTEM_LINK" ]; then # 旧版本可能在系统路径,迁移到持久化目录 echo "⚠ Found act_runner in system path, migrating to persistent storage..." cp "$SYSTEM_LINK" "$RUNNER_PATH" chmod +x "$RUNNER_PATH" ln -sf "$RUNNER_PATH" "$SYSTEM_LINK" echo " ✓ Migrated to: $RUNNER_PATH" else # 没有找到 act_runner echo "⚠ act_runner not installed yet!" echo "" echo "Please run the setup script first:" echo " docker-compose exec gitea-runner /data/setup.sh" echo "" echo "This will download and install the Gitea Runner to persistent storage." echo "Container is waiting..." # 等待 act_runner 安装 while [ ! -f "$RUNNER_PATH" ] && [ ! -f "$SYSTEM_LINK" ]; do sleep 10 done # 再次检查并创建链接 if [ -f "$RUNNER_PATH" ]; then ln -sf "$RUNNER_PATH" "$SYSTEM_LINK" echo "✓ act_runner detected and linked!" elif [ -f "$SYSTEM_LINK" ]; then cp "$SYSTEM_LINK" "$RUNNER_PATH" ln -sf "$RUNNER_PATH" "$SYSTEM_LINK" echo "✓ act_runner detected and migrated!" fi fi # 为每个已注册的 runner 创建 supervisor 配置 echo "" echo "Scanning for registered runners..." RUNNER_COUNT=0 if [ -d "/data/runners" ]; then for runner_dir in /data/runners/*/; do if [ -d "$runner_dir" ]; then runner_name=$(basename "$runner_dir") if [ -f "$runner_dir/.runner" ] && [ -f "$runner_dir/config.yaml" ]; then echo "Found runner: $runner_name" # 创建该 runner 的 supervisor 配置 cat > "/etc/supervisor/conf.d/runner-${runner_name}.conf" <