ci: add gitea deploy workflow and k3s manifests with cert-manager tls
Some checks failed
Deploy Noval to K3s / deploy (push) Failing after 1s

This commit is contained in:
2026-03-22 17:28:45 +08:00
parent 098ff4e16d
commit a470739190
8 changed files with 249 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
name: Deploy Noval to K3s
on:
push:
branches:
- main
- master
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Deploy to K3s
run: |
set -e
APP_NAME="noval"
NAMESPACE="noval-roog-code"
IMAGE_NAME="noval-app"
echo "🚀 开始部署 ${APP_NAME}..."
cd /root/k8syaml/NovalRedot
echo "📥 拉取最新代码..."
git pull origin main
NEW_COMMIT_SHA=$(git rev-parse --short HEAD)
NEW_COMMIT_MSG=$(git log -1 --oneline)
FULL_IMAGE="${IMAGE_NAME}:${NEW_COMMIT_SHA}"
echo "📦 构建镜像 ${FULL_IMAGE}"
docker build -t "${FULL_IMAGE}" .
docker tag "${FULL_IMAGE}" "${IMAGE_NAME}:latest"
if command -v k3s >/dev/null 2>&1; then
echo "📤 导入镜像到 k3s containerd..."
docker save "${FULL_IMAGE}" | k3s ctr images import -
docker save "${IMAGE_NAME}:latest" | k3s ctr images import -
fi
echo "🧱 应用 K8s 基础资源..."
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/cluster-issuer.yaml
kubectl apply -f k8s/pvc.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yaml
if kubectl get deployment "${APP_NAME}" -n "${NAMESPACE}" >/dev/null 2>&1; then
echo "🔄 检测到现有 deployment执行滚动更新..."
kubectl set image deployment/${APP_NAME} ${APP_NAME}=${FULL_IMAGE} -n "${NAMESPACE}"
else
echo "🆕 首次部署,创建 deployment..."
kubectl apply -f k8s/deployment.yaml
kubectl set image deployment/${APP_NAME} ${APP_NAME}=${FULL_IMAGE} -n "${NAMESPACE}"
fi
echo "⏳ 等待 rollout 完成..."
kubectl rollout status deployment/${APP_NAME} -n "${NAMESPACE}" --timeout=300s
echo "✅ 部署完成"
echo "📌 版本: ${NEW_COMMIT_SHA} - ${NEW_COMMIT_MSG}"
kubectl get pods -n "${NAMESPACE}" -l app=${APP_NAME} -o wide