diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 701f5ee..e2c4140 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -8,38 +8,57 @@ on: jobs: deploy: - runs-on: ubuntu + runs-on: ubuntu-latest steps: + # 使用 Gitea 官方镜像加速 Checkout,避免连接 GitHub 超时 - name: Checkout - uses: actions/checkout@v3 + uses: https://gitea.com/actions/checkout@v3 - # 建议在 Gitea 仓库设置中配置 Secrets,而不是直接写在文件中 - # SERVER_HOST, SERVER_USER, SERVER_PASSWORD - - name: Copy files to server - uses: appleboy/scp-action@v0.1.7 - 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: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y sshpass - - name: Deploy on server - uses: appleboy/ssh-action@v1.0.3 - with: - host: "6.6.6.66" - username: "quant-speed" - password: "123quant-speed" - script: | - # 进入项目目录 - cd /home/quant-speed/luna2025 + - name: Deploy to server + env: + HOST: "6.6.6.66" + USER: "quant-speed" + PASS: "123quant-speed" + # 目标目录 + TARGET_DIR: "/home/quant-speed/data/dev/ESP32_GDEY042T81_server" + run: | + # 远程执行部署命令 + sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no $USER@$HOST "bash -s" </dev/null || echo "") + + # 拉取最新代码 + 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 diff --git a/docker-compose.yml b/docker-compose.yml index c6bb58c..55ca1a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,7 @@ services: - "8199:8199" volumes: - ./static:/app/static + - ./:/app env_file: - .env.docker depends_on: