ci: add gitea deploy workflow and k3s manifests with cert-manager tls
Some checks failed
Deploy Noval to K3s / deploy (push) Failing after 1s
Some checks failed
Deploy Noval to K3s / deploy (push) Failing after 1s
This commit is contained in:
62
.gitea/workflows/deploy.yml
Normal file
62
.gitea/workflows/deploy.yml
Normal 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
|
||||
Reference in New Issue
Block a user