refactor(gitea): 简化 runner 命名,恢复默认 Gitea URL

- 修改 runner 默认命名:从 'runner-hostname-mode' 简化为 'hostname'
- 批量模式命名:从 'runner-hostname-docker/host' 改为 'hostname-docker/host'
- 恢复默认 Gitea URL 配置(https://git.shigongcao.com)
- 优化参数验证逻辑,使 GITEA_URL 参数可选
- 保持用户可通过 --name 参数自定义 runner 名称
This commit is contained in:
voson
2026-01-30 10:46:31 +08:00
parent f62146b655
commit 3cb55db864

View File

@@ -46,8 +46,8 @@ curl -s https://git.shigongcao.com/raw/ai/opencode/main/skill/gitea/create-runne
gitea-create-runner() { gitea-create-runner() {
local mode="${1:-docker}" local mode="${1:-docker}"
local token="${2:-$GITEA_TOKEN}" local token="${2:-$GITEA_TOKEN}"
local gitea_url="${3}" local gitea_url="${3:-https://git.shigongcao.com}"
local name="${4:-runner-$(hostname -s)-$mode}" local name="${4:-$(hostname -s)}"
echo "创建 $mode runner: $name" echo "创建 $mode runner: $name"
@@ -62,8 +62,8 @@ set -e
# 参数解析 # 参数解析
MODE="docker" MODE="docker"
TOKEN="" TOKEN=""
GITEA_URL="" GITEA_URL="https://git.shigongcao.com"
RUNNER_NAME="runner-$(hostname -s)-docker" RUNNER_NAME="$(hostname -s)"
ALL_MODE=false ALL_MODE=false
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
@@ -84,14 +84,9 @@ if [ -z "$TOKEN" ]; then
exit 1 exit 1
fi fi
if [ -z "$GITEA_URL" ]; then
echo "❌ 必须提供 --gitea-url 参数"
exit 1
fi
create_runner() { create_runner() {
local mode=$1 local mode=$1
local name=$2 local name="${2:-$(hostname -s)}"
echo "创建 $mode runner: $name" echo "创建 $mode runner: $name"
if [ "$mode" = "docker" ]; then if [ "$mode" = "docker" ]; then
@@ -225,8 +220,8 @@ YAML
} }
if [ "$ALL_MODE" = true ]; then if [ "$ALL_MODE" = true ]; then
create_runner "docker" "runner-$(hostname -s)-docker" create_runner "docker" "$(hostname -s)-docker"
create_runner "host" "runner-$(hostname -s)-host" create_runner "host" "$(hostname -s)-host"
else else
create_runner "$MODE" "$RUNNER_NAME" create_runner "$MODE" "$RUNNER_NAME"
fi fi
@@ -322,17 +317,17 @@ Gitea Actions Runner 创建脚本
--host 创建 Host runner --host 创建 Host runner
--all 同时创建 Docker 和 Host runner --all 同时创建 Docker 和 Host runner
--token TOKEN Gitea 注册令牌 (必需) --token TOKEN Gitea 注册令牌 (必需)
--gitea-url URL Gitea 实例地址 (必需) --gitea-url URL Gitea 实例地址 (默认: https://git.shigongcao.com)
--name NAME Runner 名称 (默认: runner-\$(hostname)-模式) --name NAME Runner 名称 (默认: hostname)
--skip-checks 跳过依赖检查 --skip-checks 跳过依赖检查
--interactive 交互模式 (传统方式) --interactive 交互模式 (传统方式)
--help 显示此帮助信息 --help 显示此帮助信息
示例: 示例:
$0 --docker --token "wibnIxvgeyYj3D7d53VTQvNxv0UVqArBwAtPFBWD" --gitea-url "https://git.shigongcao.com" $0 --docker --token "wibnIxvgeyYj3D7d53VTQvNxv0UVqArBwAtPFBWD"
$0 --host --token "your_token" --gitea-url "https://git.example.com" $0 --host --token "your_token" --gitea-url "https://git.example.com"
$0 --all --token "your_token" --gitea-url "https://git.shigongcao.com" $0 --all --token "your_token"
$0 --all --token "your_token" --gitea-url "https://git.shigongcao.com" --name "custom-runner" $0 --all --token "your_token" --name "custom-runner"
直接使用技能: 直接使用技能:
# 从技能文档直接执行 # 从技能文档直接执行
@@ -359,17 +354,10 @@ while [[ $# -gt 0 ]]; do
done done
# 检查必需参数 # 检查必需参数
if [ "$INTERACTIVE" = false ]; then if [ -z "$GITEA_TOKEN" ] && [ "$INTERACTIVE" = false ]; then
if [ -z "$GITEA_TOKEN" ]; then
echo "❌ 必须提供 --token 参数" echo "❌ 必须提供 --token 参数"
echo "使用 --help 查看帮助" echo "使用 --help 查看帮助"
exit 1 exit 1
fi
if [ -z "$GITEA_URL" ]; then
echo "❌ 必须提供 --gitea-url 参数"
echo "使用 --help 查看帮助"
exit 1
fi
fi fi
# ========================================== # ==========================================
@@ -407,17 +395,16 @@ if [ -z "$GITEA_URL" ] || [ -z "$GITEA_TOKEN" ]; then
fi fi
fi fi
# 检查必需参数 # 如果仍然缺少 URL使用默认值
if [ -z "$GITEA_URL" ]; then if [ -z "$GITEA_URL" ]; then
echo "❌ 必须提供 Gitea URL" GITEA_URL="https://git.shigongcao.com"
echo " 使用方法: $0 --token YOUR_TOKEN --gitea-url YOUR_GITEA_URL [其他选项]" echo "⚠️ 使用默认 Gitea URL: $GITEA_URL"
echo " 或创建配置文件: $HOME/.config/gitea/config.env"
exit 1
fi fi
# 检查必需参数
if [ -z "$GITEA_TOKEN" ]; then if [ -z "$GITEA_TOKEN" ]; then
echo "❌ 必须提供 Gitea 注册令牌" echo "❌ 必须提供 Gitea 注册令牌"
echo " 使用方法: $0 --token YOUR_TOKEN --gitea-url YOUR_GITEA_URL [其他选项]" echo " 使用方法: $0 --token YOUR_TOKEN [其他选项]"
echo " 或创建配置文件: $HOME/.config/gitea/config.env" echo " 或创建配置文件: $HOME/.config/gitea/config.env"
exit 1 exit 1
fi fi
@@ -438,7 +425,118 @@ if [ -z "$RUNNER_NAME" ]; then
# 批量模式会创建两个runner # 批量模式会创建两个runner
echo "批量模式:将创建 docker 和 host runner" echo "批量模式:将创建 docker 和 host runner"
else else
RUNNER_NAME="runner-$hostname-$RUNNER_MODE" RUNNER_NAME="$hostname"
echo "生成 Runner 名称: $RUNNER_NAME"
fi
else
echo "使用指定的 Runner 名称: $RUNNER_NAME"
fi
# 检查名称有效性(如果不是批量模式)
if [ "$ALL_MODE" = false ] && [[ ! "$RUNNER_NAME" =~ ^[a-zA-Z0-9_-]+$ ]]; then
echo "❌ Runner 名称无效 (仅限字母、数字、下划线、连字符)"
exit 1
fi
echo ""
read -p "请输入选项 [1/2] (默认 1): " mode_choice
if [ "$mode_choice" = "2" ]; then
RUNNER_MODE="docker"
echo "✅ 已选择: Docker Mode"
else
RUNNER_MODE="host"
echo "✅ 已选择: Host Mode"
fi
echo ""
fi
# Check dependencies based on mode
if [ "$RUNNER_MODE" = "host" ]; then
echo "检查 act_runner 安装状态..."
if command -v act_runner &> /dev/null; then
version=$(act_runner --version 2>&1 | head -n1)
echo "✓ act_runner 已安装: $version"
else
echo "⚠️ act_runner 未安装"
echo "正在使用 Homebrew 安装..."
if ! command -v brew &> /dev/null; then
echo "❌ 需要先安装 Homebrew"
exit 1
fi
brew install act_runner
if [ $? -eq 0 ]; then
echo "✓ act_runner 安装成功"
else
echo "❌ act_runner 安装失败"
exit 1
fi
fi
else
# Docker mode checks
echo "检查 Docker 环境..."
if command -v docker &> /dev/null; then
if docker info &> /dev/null; then
docker_ver=$(docker --version)
echo "✓ Docker 已安装并运行: $docker_ver"
else
echo "❌ Docker 已安装但未运行"
echo " 请启动 Docker Desktop"
exit 1
fi
else
echo "❌ Docker 未安装"
echo " Docker 模式需要预先安装 Docker"
echo " 请访问 https://www.docker.com/products/docker-desktop/ 下载安装"
exit 1
fi
fi
echo ""
# ==========================================
# 3. Load Gitea Configuration
# ==========================================
# 如果未通过命令行提供,尝试从配置文件加载
if [ -z "$GITEA_URL" ] || [ -z "$GITEA_TOKEN" ]; then
config_file="$HOME/.config/gitea/config.env"
if [ -f "$config_file" ]; then
echo "从配置文件加载 Gitea 配置..."
source "$config_file"
fi
fi
# 如果仍然缺少 URL使用默认值
if [ -z "$GITEA_URL" ]; then
GITEA_URL="https://git.shigongcao.com"
echo "⚠️ 使用默认 Gitea URL: $GITEA_URL"
fi
# 检查必需参数
if [ -z "$GITEA_TOKEN" ]; then
echo "❌ 必须提供 Gitea 注册令牌"
echo " 使用方法: $0 --token YOUR_TOKEN [其他选项]"
echo " 或创建配置文件: $HOME/.config/gitea/config.env"
exit 1
fi
echo "✓ Gitea 配置:"
echo " URL: $GITEA_URL"
echo " Token: ${GITEA_TOKEN:0:8}..."
echo ""
# ==========================================
# 4. Generate Runner Name
# ==========================================
# 如果未指定名称,生成默认名称
if [ -z "$RUNNER_NAME" ]; then
hostname=$(hostname -s 2>/dev/null || echo "unknown")
if [ "$ALL_MODE" = true ]; then
# 批量模式会创建两个runner
echo "批量模式:将创建 docker 和 host runner"
else
RUNNER_NAME="$hostname"
echo "生成 Runner 名称: $RUNNER_NAME" echo "生成 Runner 名称: $RUNNER_NAME"
fi fi
else else
@@ -728,8 +826,8 @@ if [ "$ALL_MODE" = true ]; then
host_name="${RUNNER_NAME}-host" host_name="${RUNNER_NAME}-host"
else else
# 使用默认名称 # 使用默认名称
docker_name="runner-${hostname}-docker" docker_name="${hostname}-docker"
host_name="runner-${hostname}-host" host_name="${hostname}-host"
fi fi
echo "批量创建模式:" echo "批量创建模式:"