Files
k3s-configs/php-test/gitops-deploy.sh
2026-01-21 13:40:04 +00:00

79 lines
2.4 KiB
Bash
Executable File

#!/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}"
# 只添加 php-test 目录的文件
git add php-test/
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}"
CURRENT_BRANCH=$(git branch --show-current)
if git push -u origin ${CURRENT_BRANCH}; then
echo -e "${GREEN}✅ 代码已推送到远程仓库${NC}"
else
echo -e "${RED}❌ 推送失败,请检查远程仓库配置${NC}"
echo -e "${YELLOW}提示: 使用 'git remote -v' 查看远程仓库配置${NC}"
echo -e "${YELLOW}可能需要在 Gitea 中先创建仓库: https://git.u9.net3w.com${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"