vala_git_workspace_backup.v.../scripts/setup.sh
2026-04-10 19:54:22 +08:00

76 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e
# 从传入参数获取配置,无硬编码敏感信息
AGENT_NAME="$1"
GIT_TOKEN="$2"
GIT_USERNAME="$3"
GIT_EMAIL="$4"
GIT_REPO_URL="${5:-https://git.valavala.com/${GIT_USERNAME}/ai_member_${AGENT_NAME}.git}"
CRON_SCHEDULE="${6:-30 8 * * *}"
# 自动创建Git仓库如果不存在
REPO_NAME="ai_member_${AGENT_NAME}"
echo "🔍 检查Git仓库是否存在: $REPO_NAME"
REPO_CHECK=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $GIT_TOKEN" "https://git.valavala.com/api/v1/repos/$GIT_USERNAME/$REPO_NAME")
if [ "$REPO_CHECK" -eq 404 ]; then
echo "🆕 仓库不存在,自动创建中..."
CREATE_RESPONSE=$(curl -s -X POST "https://git.valavala.com/api/v1/user/repos" \
-H "Authorization: token $GIT_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"$REPO_NAME\",
\"private\": false,
\"description\": \"${AGENT_NAME} workspace 备份\",
\"auto_init\": false
}")
if echo "$CREATE_RESPONSE" | grep -q '"id":'; then
echo "✅ 仓库创建成功: https://git.valavala.com/$GIT_USERNAME/$REPO_NAME"
else
echo "❌ 仓库创建失败: $CREATE_RESPONSE"
exit 1
fi
elif [ "$REPO_CHECK" -eq 200 ]; then
echo "✅ 仓库已存在,跳过创建"
else
echo "⚠️ 仓库检查失败HTTP状态码: $REPO_CHECK,继续执行配置"
fi
WORKSPACE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../../" && pwd)"
# 初始化Git仓库
cd "$WORKSPACE_DIR"
if [ ! -d .git ]; then
git init
fi
# 配置敏感文件过滤规则
cat > .gitignore <<EOF
secrets.md
.secrets
*.env
*.pem
*.key
*.crt
.DS_Store
node_modules/
logs/
tmp/
temp/
*.log
EOF
# 配置Git用户信息
git config user.name "$GIT_USERNAME"
git config user.email "$GIT_EMAIL"
# 配置远程仓库地址动态拼接Token
FULL_REPO_URL=$(echo "$GIT_REPO_URL" | sed "s|https://|https://$GIT_USERNAME:$GIT_TOKEN@|")
git remote remove origin 2>/dev/null || true
git remote add origin "$FULL_REPO_URL"
# 首次提交推送
git add .
git commit -m "initial backup $(date +'%Y-%m-%d %H:%M:%S')" || true
git branch -M main
git push -u origin main || true
# 创建日志目录
mkdir -p "$WORKSPACE_DIR/logs"
# 配置定时任务,避免重复添加
BACKUP_SCRIPT_PATH="$WORKSPACE_DIR/skills/vala_git_workspace_backup/scripts/backup.sh"
chmod +x "$BACKUP_SCRIPT_PATH"
(crontab -l 2>/dev/null | grep -v "$BACKUP_SCRIPT_PATH"; echo "$CRON_SCHEDULE $BACKUP_SCRIPT_PATH >> $WORKSPACE_DIR/logs/git_backup.log 2>&1") | crontab -
echo "✅ 配置完成,定时备份任务已设置:$CRON_SCHEDULE"