action
Some checks failed
Deploy to Server / deploy (push) Has been cancelled

This commit is contained in:
jeremygan2021
2026-03-02 13:07:34 +08:00
parent a1e8c042ca
commit 373ce8cb2e
2 changed files with 50 additions and 30 deletions

View File

@@ -8,38 +8,57 @@ on:
jobs: jobs:
deploy: deploy:
runs-on: ubuntu runs-on: ubuntu-latest
steps: steps:
# 使用 Gitea 官方镜像加速 Checkout避免连接 GitHub 超时
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: https://gitea.com/actions/checkout@v3
# 建议在 Gitea 仓库设置中配置 Secrets而不是直接写在文件中 - name: Install dependencies
# SERVER_HOST, SERVER_USER, SERVER_PASSWORD run: |
- name: Copy files to server sudo apt-get update
uses: appleboy/scp-action@v0.1.7 sudo apt-get install -y sshpass
with:
host: "6.6.6.66"
username: "quant-speed"
password: "123quant-speed"
source: "."
target: "/home/quant-speed/luna2025"
# 排除不需要上传的文件
exclude: ".git,.github,.gitea,.trae,__pycache__,*.pyc,*.pyo,*.pyd,.DS_Store"
- name: Deploy on server - name: Deploy to server
uses: appleboy/ssh-action@v1.0.3 env:
with: HOST: "6.6.6.66"
host: "6.6.6.66" USER: "quant-speed"
username: "quant-speed" PASS: "123quant-speed"
password: "123quant-speed" # 目标目录
script: | TARGET_DIR: "/home/quant-speed/data/dev/ESP32_GDEY042T81_server"
# 进入项目目录 run: |
cd /home/quant-speed/luna2025 # 远程执行部署命令
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no $USER@$HOST "bash -s" <<EOF
# 确保目标目录存在
mkdir -p $TARGET_DIR
cd $TARGET_DIR
# 停止容器并删除同名镜像 # 记录当前 HEAD用于后续 diff
# --rmi local: 删除服务构建的镜像 OLD_HEAD=\$(git rev-parse HEAD 2>/dev/null || echo "")
echo "123quant-speed" | sudo -S docker compose down --rmi local
echo "123quant-speed" | sudo -S docker rmi epaper_server:latest || true
# 启动服务 # 拉取最新代码
echo "123quant-speed" | sudo -S docker compose up -d --build echo "正在拉取最新代码..."
git pull || { echo "Git pull failed"; exit 1; }
NEW_HEAD=\$(git rev-parse HEAD)
# 检查是否有代码更新
if [ "\$OLD_HEAD" == "\$NEW_HEAD" ]; then
echo "代码没有变化,无需重启"
exit 0
fi
# 检查是否需要重新构建镜像 (Dockerfile 或 requirements.txt 变动)
# 使用 git diff 检查此次 pull 更新的文件列表
if git diff --name-only \$OLD_HEAD \$NEW_HEAD | grep -E 'Dockerfile|requirements.txt'; then
echo "检测到构建文件变动,开始重新构建镜像..."
echo "$PASS" | sudo -S docker compose down --rmi local
# 确保清理干净
echo "$PASS" | sudo -S docker rmi epaper_server:latest || true
echo "$PASS" | sudo -S docker compose up -d --build
else
echo "仅代码变动,无需重新构建镜像,重启容器..."
echo "$PASS" | sudo -S docker compose down
echo "$PASS" | sudo -S docker compose up -d
fi
EOF

View File

@@ -10,6 +10,7 @@ services:
- "8199:8199" - "8199:8199"
volumes: volumes:
- ./static:/app/static - ./static:/app/static
- ./:/app
env_file: env_file:
- .env.docker - .env.docker
depends_on: depends_on: