#!/bin/bash set -e echo "=== Archiving to main branch ===" echo "当前容器信息:" echo "主机名: $(hostname)" echo "IP地址: $(hostname -i)" echo "" echo "2. 配置SSH环境" mkdir -p ~/.ssh printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa echo "✅ SSH私钥文件已创建" ls -la ~/.ssh/id_rsa wc -c < ~/.ssh/id_rsa echo "" echo "3. 配置Git服务器主机密钥" ssh-keyscan -H -p 22 git.f.novalon.cn >> ~/.ssh/known_hosts echo "✅ Git服务器主机密钥已添加" echo "" echo "4. 增强网络连接测试" echo "测试DNS解析:" dig +short git.f.novalon.cn || nslookup git.f.novalon.cn || echo "DNS解析测试完成" echo "测试端口连通性:" timeout 10 nc -zv git.f.novalon.cn 22 && echo "✅ SSH端口可达" || echo "❌ SSH端口不可达" echo "" echo "5. 增强SSH连接测试" echo "测试SSH连接到Git服务器..." timeout 15 ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes -T git@git.f.novalon.cn "echo '✅ SSH连接成功'" 2>&1 || echo "❌ SSH连接失败,但继续执行" echo "" echo "6. 配置Git用户信息" git config --global user.email "ci@novalon.cn" git config --global user.name "Woodpecker CI" echo "✅ Git用户信息已配置" echo "" echo "7. 配置Git远程仓库" git remote set-url origin git@git.f.novalon.cn:novalon/novalon-website.git echo "✅ Git远程仓库已配置" echo "" echo "8. 增强Git远程访问测试" echo "测试Git远程仓库访问权限..." timeout 10 git ls-remote origin --heads 2>&1 | head -5 && echo "✅ Git远程访问成功" || echo "❌ Git远程访问失败,但继续执行" echo "" echo "9. 执行归档操作(增强错误处理)" export CURRENT_BRANCH="${CI_COMMIT_BRANCH}" echo "当前分支: $CURRENT_BRANCH" echo "提交SHA: ${CI_COMMIT_SHA:0:7}" echo "" echo "9.1 切换到main分支" git checkout main || { echo "❌ 切换到main分支失败"; exit 1; } echo "" echo "9.2 拉取最新main分支" git pull origin main --no-rebase || { echo "❌ 拉取main分支失败"; exit 1; } echo "" echo "9.3 合并当前分支到main" git merge "$CURRENT_BRANCH" --no-ff -m "archive: $CURRENT_BRANCH → main [CI]" || { echo "❌ 合并分支失败"; exit 1; } echo "" echo "9.4 创建版本标签" export VERSION_TAG="v$(date +%Y.%m.%d)-${CI_COMMIT_SHA:0:7}" git tag -a "$VERSION_TAG" -m "Release: $CURRENT_BRANCH → $VERSION_TAG [CI]" || { echo "❌ 创建标签失败"; exit 1; } echo "" echo "9.5 推送到远程仓库" git push origin main || { echo "❌ 推送main分支失败"; exit 1; } git push origin --tags || { echo "❌ 推送标签失败"; exit 1; } echo "" echo "✅ 归档成功完成!版本: $VERSION_TAG"