#!/bin/bash # GitOps 自动部署脚本 # 用于快速部署 PHP 测试项目到 k3s 集群 set -e echo "🚀 GitOps 自动部署流程启动..." # 颜色定义 GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # 配置 REGISTRY="registry.u9.net3w.com" IMAGE_NAME="php-test" TAG="${1:-latest}" # 步骤 1: 构建并推送镜像 echo -e "${BLUE}📦 步骤 1/4: 构建并推送 Docker 镜像...${NC}" ./build-and-push.sh ${TAG} echo "" # 步骤 2: 提交到 Git echo -e "${BLUE}📝 步骤 2/4: 提交代码到 Git...${NC}" git add . if git diff --staged --quiet; then echo -e "${YELLOW}⚠️ 没有需要提交的更改${NC}" else COMMIT_MSG="${2:-Update PHP test app - $(date '+%Y-%m-%d %H:%M:%S')}" git commit -m "${COMMIT_MSG}" echo -e "${GREEN}✅ 代码已提交${NC}" fi echo "" # 步骤 3: 推送到远程仓库 echo -e "${BLUE}📤 步骤 3/4: 推送到远程仓库...${NC}" if git push; then echo -e "${GREEN}✅ 代码已推送到远程仓库${NC}" else echo -e "${RED}❌ 推送失败,请检查远程仓库配置${NC}" echo -e "${YELLOW}提示: 使用 'git remote -v' 查看远程仓库配置${NC}" exit 1 fi echo "" # 步骤 4: 应用 ArgoCD 配置 echo -e "${BLUE}🎯 步骤 4/4: 应用 ArgoCD 配置...${NC}" if kubectl apply -f argocd-app.yaml; then echo -e "${GREEN}✅ ArgoCD Application 已创建/更新${NC}" else echo -e "${YELLOW}⚠️ ArgoCD Application 应用失败,可能已存在${NC}" fi echo "" # 显示部署信息 echo -e "${GREEN}🎉 GitOps 部署流程完成!${NC}" echo "" echo -e "${BLUE}📊 部署信息:${NC}" echo "================================" echo "镜像: ${REGISTRY}/${IMAGE_NAME}:${TAG}" echo "Git 仓库: $(git remote get-url origin 2>/dev/null || echo '未配置')" echo "ArgoCD: https://argocd.u9.net3w.com" echo "应用访问: https://php.u9.net3w.com" echo "" echo -e "${YELLOW}⏳ ArgoCD 将在 3 分钟内自动同步部署${NC}" echo "" echo -e "${BLUE}监控命令:${NC}" echo " - 查看 ArgoCD 应用: kubectl get application php-test -n argocd" echo " - 查看 Pod 状态: kubectl get pods -n php-test" echo " - 查看部署日志: kubectl logs -f deployment/php-app -n php-test" echo " - 手动同步: argocd app sync php-test"