76 lines
2.2 KiB
Bash
Executable File
76 lines
2.2 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}"
|
|
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"
|