name: PR合并自动部署 on: pull_request: branches: [main] types: [closed] jobs: deploy: if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - name: 配置SSH环境 run: | mkdir -p ~/.ssh echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts - name: 远程执行部署 run: | ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << EOF set -e cd ${{ secrets.DEPLOY_PATH }} git config --global --add safe.directory ${{ secrets.DEPLOY_PATH }} git fetch origin main # 备份运行时db快照 if [ -f data/miniapp_v3.db ]; then cp data/miniapp_v3.db data/miniapp_v3.db.tmp fi # 检出远端main全部文件(含git里的db) git checkout origin/main -- . # 判断本次提交是否更新了db CHANGED=\$(git diff --name-only HEAD FETCH_HEAD | grep "data/miniapp_v3.db" || true) if [ -z "\$CHANGED" ]; then # git未更新db:恢复服务器运行时的db if [ -f data/miniapp_v3.db.tmp ]; then cp data/miniapp_v3.db.tmp data/miniapp_v3.db fi fi rm -f data/miniapp_v3.db.tmp /www/server/pyporject_evn/versions/3.12.13/bin/pip install -r requirements.txt chown -R www:www . /www/server/panel/pyenv/bin/python3 /www/server/panel/plugin/python/project.py restart Hulumath-Web-Demo EOF