Rails 8.1 + SQLite app - 2026-02-04 22:51:42
This commit is contained in:
138
deploy.sh
Executable file
138
deploy.sh
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/bin/bash
|
||||
# Rails 8.1 应用部署脚本(使用containerd)
|
||||
|
||||
set -e
|
||||
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "🚀 Rails 8.1 应用GitOps部署"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
|
||||
# 配置
|
||||
GITEA_URL="http://git.jpd.net3w.com"
|
||||
GITEA_USER="gitea_admin"
|
||||
GITEA_PASSWORD="GitAdmin@2026"
|
||||
REPO_NAME="rails-app"
|
||||
APP_DIR="/home/fei/opk3s/app-project/001-rails8"
|
||||
SSH_PASS="1"
|
||||
|
||||
cd "$APP_DIR"
|
||||
|
||||
echo "📝 步骤 1/5: 初始化Git仓库"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
if [ ! -d .git ]; then
|
||||
git init
|
||||
git config user.name "Admin"
|
||||
git config user.email "admin@jpd.net3w.com"
|
||||
echo "✅ Git仓库初始化完成"
|
||||
else
|
||||
echo "✅ Git仓库已存在"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
echo "📝 步骤 2/5: 在Gitea创建仓库"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
curl -X POST "${GITEA_URL}/api/v1/user/repos" \
|
||||
-u "${GITEA_USER}:${GITEA_PASSWORD}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"name\": \"${REPO_NAME}\",
|
||||
\"description\": \"Rails 8.1 + SQLite Application\",
|
||||
\"private\": false,
|
||||
\"auto_init\": false
|
||||
}" 2>/dev/null && echo "✅ Gitea仓库创建成功" || echo "✅ 仓库已存在"
|
||||
echo ""
|
||||
|
||||
echo "📝 步骤 3/5: 推送代码到Gitea"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
git remote remove origin 2>/dev/null || true
|
||||
git remote add origin "http://${GITEA_USER}:${GITEA_PASSWORD}@git.jpd.net3w.com/${GITEA_USER}/${REPO_NAME}.git"
|
||||
|
||||
git add .
|
||||
git commit -m "Rails 8.1 + SQLite app - $(date '+%Y-%m-%d %H:%M:%S')" || echo "没有新的更改"
|
||||
git branch -M main
|
||||
git push -u origin main --force
|
||||
|
||||
echo "✅ 代码已推送到Gitea"
|
||||
echo ""
|
||||
|
||||
echo "📝 步骤 4/5: 部署到K3s集群"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
# 上传K8s配置文件
|
||||
sshpass -p "$SSH_PASS" ssh fei@149.13.91.216 "mkdir -p /tmp/rails-app-k8s"
|
||||
sshpass -p "$SSH_PASS" scp -r k8s/* fei@149.13.91.216:/tmp/rails-app-k8s/
|
||||
|
||||
# 部署到K3s
|
||||
sshpass -p "$SSH_PASS" ssh fei@149.13.91.216 "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && \
|
||||
kubectl create namespace rails-app --dry-run=client -o yaml | kubectl apply -f - && \
|
||||
kubectl apply -f /tmp/rails-app-k8s/"
|
||||
|
||||
echo "✅ 应用已部署到K3s"
|
||||
echo ""
|
||||
|
||||
echo "📝 步骤 5/5: 配置ArgoCD自动同步"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
sshpass -p "$SSH_PASS" ssh fei@149.13.91.216 "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && \
|
||||
kubectl apply -f - <<'EOF'
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: rails-app
|
||||
namespace: argocd
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: http://gitea-http.gitea.svc.cluster.local:3000/${GITEA_USER}/${REPO_NAME}.git
|
||||
targetRevision: main
|
||||
path: k8s
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: rails-app
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
allowEmpty: false
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
EOF
|
||||
"
|
||||
|
||||
echo "✅ ArgoCD自动同步已配置"
|
||||
echo ""
|
||||
|
||||
# 检查Pod状态
|
||||
echo "🔍 检查Pod状态..."
|
||||
sshpass -p "$SSH_PASS" ssh fei@149.13.91.216 "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && \
|
||||
kubectl get pods -n rails-app"
|
||||
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "🎉 部署完成!"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
echo "📊 访问信息:"
|
||||
echo " 应用地址: http://r1.jpd.net3w.com"
|
||||
echo " HTTPS: https://r1.jpd.net3w.com"
|
||||
echo " Gitea仓库: ${GITEA_URL}/${GITEA_USER}/${REPO_NAME}"
|
||||
echo " ArgoCD: http://argocd.jpd.net3w.com"
|
||||
echo ""
|
||||
echo "💡 开发流程:"
|
||||
echo " 1. 本地修改代码"
|
||||
echo " 2. git add . && git commit -m 'your message'"
|
||||
echo " 3. git push"
|
||||
echo " 4. ArgoCD会自动检测并部署(约1-2分钟)"
|
||||
echo ""
|
||||
echo "🔍 查看状态:"
|
||||
echo " sshpass -p '1' ssh fei@149.13.91.216 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && kubectl get pods -n rails-app'"
|
||||
echo " sshpass -p '1' ssh fei@149.13.91.216 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && kubectl logs -n rails-app -l app=rails-app -f'"
|
||||
echo ""
|
||||
echo "📝 注意:"
|
||||
echo " 由于使用公共镜像ruby:3.3-slim,首次启动可能需要5-10分钟下载镜像"
|
||||
echo " Pod会自动创建Rails应用并启动"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user