#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" CONFIG_FILE="$PROJECT_DIR/config/cluster-vars.yml" echo "=== 推送示例应用到Gitea ===" # 读取配置 GITEA_USER=$(yq eval '.gitea_user_name' "$CONFIG_FILE") GITEA_PASSWORD=$(yq eval '.gitea_user_password' "$CONFIG_FILE") GITEA_ORG=$(yq eval '.gitea_org_name' "$CONFIG_FILE") GITEA_REPO=$(yq eval '.gitea_repo_name' "$CONFIG_FILE") # 获取Gitea NodePort GITEA_NODEPORT=$(kubectl get svc gitea-http -n gitea -o jsonpath='{.spec.ports[0].nodePort}') NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="ExternalIP")].address}') if [ -z "$NODE_IP" ]; then NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}') fi GITEA_URL="http://$NODE_IP:$GITEA_NODEPORT" REPO_URL="$GITEA_URL/$GITEA_ORG/$GITEA_REPO.git" # 创建临时目录 TEMP_DIR=$(mktemp -d) cd "$TEMP_DIR" echo "📝 创建示例应用清单..." # 创建manifests目录 mkdir -p manifests # 创建示例Deployment cat > manifests/deployment.yaml < manifests/service.yaml < README.md <:30080 \`\`\` EOF # 初始化Git仓库 echo "🔧 初始化Git仓库..." git init -b main git config user.name "$GITEA_USER" git config user.email "$GITEA_USER@example.com" git add . git commit -m "Initial commit: Add demo nginx application Co-Authored-By: Claude Sonnet 4.5 " # 推送到Gitea echo "📤 推送到Gitea..." git remote add origin "$REPO_URL" # 使用用户名密码推送(临时方案) # URL encode the password to handle special characters ENCODED_PASSWORD=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$GITEA_PASSWORD'))") git push -u origin main || { echo "⚠️ 首次推送失败,尝试使用凭证..." git remote set-url origin "http://$GITEA_USER:$ENCODED_PASSWORD@$NODE_IP:$GITEA_NODEPORT/$GITEA_ORG/$GITEA_REPO.git" git push -u origin main } # 清理 cd "$PROJECT_DIR" rm -rf "$TEMP_DIR" echo "✅ 示例应用推送成功!" echo "📊 仓库地址: $REPO_URL" echo "🌐 访问Gitea查看: $GITEA_URL/$GITEA_ORG/$GITEA_REPO" echo "⏳ 等待ArgoCD同步(约3分钟)..." echo "📊 查看同步状态: kubectl get application -n argocd"