#!/bin/bash echo "=========================================" echo "Gitea OAuth2应用自动配置" echo "=========================================" echo "" echo "步骤1: 生成管理员Access Token..." # 使用正确的scope (all包含所有权限) OUTPUT=$(docker exec -u git forgejo gitea admin user generate-access-token \ --username novalon-admin \ --token-name oauth2-setup-$(date +%s) \ --scopes all 2>&1) echo "$OUTPUT" # 从输出中提取token TOKEN=$(echo "$OUTPUT" | grep -oP 'Access token: \K.*' || echo "") echo "" echo "步骤2: 使用Token创建OAuth2应用..." if [ -n "$TOKEN" ]; then echo "Token已生成: ${TOKEN:0:20}..." # 使用API创建OAuth2应用 RESPONSE=$(docker exec forgejo curl -s -X POST "http://localhost:3000/api/v1/applications/oauth2" \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Woodpecker CI", "redirect_uri": "https://ci.f.novalon.cn/authorize", "confidential_client": true }') echo "API响应: $RESPONSE" # 提取Client ID和Secret CLIENT_ID=$(echo "$RESPONSE" | grep -oP '"client_id":"\K[^"]+' || echo "") CLIENT_SECRET=$(echo "$RESPONSE" | grep -oP '"client_secret":"\K[^"]+' || echo "") if [ -n "$CLIENT_ID" ] && [ -n "$CLIENT_SECRET" ]; then echo "" echo "=========================================" echo "✅ OAuth2应用创建成功!" echo "=========================================" echo "" echo "Client ID: $CLIENT_ID" echo "Client Secret: $CLIENT_SECRET" echo "" echo "请将以下内容添加到.env文件:" echo "WOODPECKER_FORGEJO_CLIENT=$CLIENT_ID" echo "WOODPECKER_FORGEJO_SECRET=$CLIENT_SECRET" echo "" echo "然后重启Woodpecker服务:" echo "cd /home/novalon/docker-app/novalon-cicd" echo "docker-compose restart woodpecker-server" echo "=========================================" exit 0 else echo "警告: 无法从API响应中提取凭证" fi else echo "警告: 无法生成Token" fi echo "" echo "=========================================" echo "⚠️ 自动配置失败,请手动完成" echo "=========================================" echo "" echo "1. 访问 https://git.f.novalon.cn" echo "2. 登录凭证:" echo " 用户名: novalon-admin" echo " 密码: Novalon@Admin2026" echo "" echo "3. 创建OAuth2应用:" echo " 头像 -> 设置 -> 应用 -> OAuth2应用 -> 创建应用" echo " 名称: Woodpecker CI" echo " 重定向URI: https://ci.f.novalon.cn/authorize" echo "" echo "4. 记录Client ID和Secret并更新.env文件" echo "========================================="