This commit is contained in:
@@ -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" <<EOF
|
||||
# 确保目标目录存在
|
||||
mkdir -p $TARGET_DIR
|
||||
cd $TARGET_DIR
|
||||
|
||||
# 停止容器并删除同名镜像
|
||||
# --rmi local: 删除服务构建的镜像
|
||||
echo "123quant-speed" | sudo -S docker compose down --rmi local
|
||||
echo "123quant-speed" | sudo -S docker rmi epaper_server:latest || true
|
||||
# 记录当前 HEAD,用于后续 diff
|
||||
OLD_HEAD=\$(git rev-parse HEAD 2>/dev/null || echo "")
|
||||
|
||||
# 启动服务
|
||||
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
|
||||
|
||||
@@ -10,6 +10,7 @@ services:
|
||||
- "8199:8199"
|
||||
volumes:
|
||||
- ./static:/app/static
|
||||
- ./:/app
|
||||
env_file:
|
||||
- .env.docker
|
||||
depends_on:
|
||||
|
||||
Reference in New Issue
Block a user