This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user