name: 部署-局域网 # push 到 main 即自动上线 51.66(无人工环节) on: push: branches: [main] jobs: deploy: runs-on: build-runner steps: - name: 拉取代码 run: | git clone --depth 1 "http://dafe:${{ secrets.GITHUB_TOKEN }}@192.168.51.66:3000/dafe/homepage.git" site - name: 注入构建版本号(缓存击穿,版本=commit 短 SHA) run: | cd site sed -i "s/?v=[0-9]*/?v=${GITHUB_SHA:0:8}/g" index.html - name: 部署到 51.66 env: DEPLOY_KEY: ${{ secrets.DEPLOY_SSH_KEY }} run: | mkdir -p ~/.ssh && chmod 700 ~/.ssh printf '%s\n' "$DEPLOY_KEY" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -H 192.168.51.66 >> ~/.ssh/known_hosts 2>/dev/null cd site # 清空后解压 = rsync --delete 的等效语义,服务器与 git 状态严格一致 ssh ubuntu@192.168.51.66 'mkdir -p /home/ubuntu/homepage-site && find /home/ubuntu/homepage-site -mindepth 1 -maxdepth 1 -exec rm -rf {} +' tar czf - index.html assets | ssh ubuntu@192.168.51.66 'tar xzf - -C /home/ubuntu/homepage-site' - name: 上线验证 run: | curl -sk -f -o /dev/null https://192.168.51.66/homepage/ || { echo "❌ 局域网验证失败"; exit 1; } echo "✅ 局域网已上线 $(date '+%H:%M:%S')"