server/.gitea/workflows/docker.yml
shanshanzhong 4d39fd1b84
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 7s
i1
2025-09-26 18:43:33 -07:00

132 lines
4.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Build docker and publish
run-name: 简化的Docker构建和部署流程
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
# Docker镜像仓库
REPO: ${{ vars.REPO }}
# SSH连接信息
SSH_HOST: ${{ vars.SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }}
SSH_USER: ${{ vars.SSH_USER }}
SSH_PASSWORD: ${{ vars.SSH_PASSWORD }}
# TG通知
TG_BOT_TOKEN: 8114337882:AAHkEx03HSu7RxN4IHBJJEnsK9aPPzNLIk0
TG_CHAT_ID: "-4940243803"
jobs:
build:
runs-on: ppanel-server
container:
image: node:20
strategy:
matrix:
# 只有node支持版本号别名
node: ['20.15.1']
steps:
# 步骤1: 下载代码
- name: 📥 下载代码
uses: actions/checkout@v4
# 步骤2: 打包编译 (执行dockerfile编译 + make build)
- name: 🔨 打包编译
run: |
echo "开始编译..."
make build
echo "编译完成开始构建Docker镜像..."
make docker
echo "Docker镜像构建完成"
# 步骤3: 发布到镜像仓库
- name: 📤 发布到镜像仓库
run: |
echo "开始推送镜像到仓库..."
make publish-docker
echo "镜像推送完成"
# 步骤4: 连接服务器拉镜像启动
- name: 🚀 连接服务器拉镜像启动
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USER }}
password: ${{ env.SSH_PASSWORD }}
port: ${{ env.SSH_PORT }}
timeout: 300s
command_timeout: 600s
script: |
echo "连接服务器成功,开始部署..."
# 停止并删除旧容器
if docker ps -a | grep -q ppanel-server; then
echo "停止旧容器..."
docker stop ppanel-server || true
docker rm ppanel-server || true
fi
# 拉取最新镜像
echo "拉取最新镜像..."
docker pull ${{ env.REPO }}:latest
# 启动新容器
echo "启动新容器..."
docker run -d \
--name ppanel-server \
--restart unless-stopped \
-p 8080:8080 \
${{ env.REPO }}:latest
# 检查容器状态
sleep 5
if docker ps | grep -q ppanel-server; then
echo "✅ 容器启动成功"
else
echo "❌ 容器启动失败"
exit 1
fi
# 步骤5: TG通知 (成功)
- name: 📱 发送成功通知到Telegram
if: success()
uses: chapvic/telegram-notify@master
with:
bot_token: ${{ env.TG_BOT_TOKEN }}
chat_id: ${{ env.TG_CHAT_ID }}
message: |
✅ **部署成功!**
📦 **项目**: ${{ github.repository }}
🌿 **分支**: ${{ github.ref_name }}
📝 **提交**: ${{ github.sha }}
👤 **提交者**: ${{ github.actor }}
🕐 **时间**: ${{ github.event.head_commit.timestamp }}
🚀 **服务已成功部署到生产环境**
parse_mode: Markdown
# 步骤5: TG通知 (失败)
- name: 📱 发送失败通知到Telegram
if: failure()
uses: chapvic/telegram-notify@master
with:
bot_token: ${{ env.TG_BOT_TOKEN }}
chat_id: ${{ env.TG_CHAT_ID }}
message: |
❌ **部署失败!**
📦 **项目**: ${{ github.repository }}
🌿 **分支**: ${{ github.ref_name }}
📝 **提交**: ${{ github.sha }}
👤 **提交者**: ${{ github.actor }}
🕐 **时间**: ${{ github.event.head_commit.timestamp }}
⚠️ **请检查构建日志获取详细信息**
parse_mode: Markdown