name: Deploy WebSocket Server on: push: branches: - master # 或者是 master,请根据您的分支名称修改 jobs: deploy: runs-on: ubuntu # 或者您的 Gitea runner 标签1 steps: - name: Check Secrets env: HOST: ${{ secrets.SERVER_HOST }} USERNAME: ${{ secrets.SERVER_USERNAME }} PASSWORD: ${{ secrets.SERVER_PASSWORD }} run: | if [ -z "$HOST" ]; then echo "Error: SERVER_HOST is not set!"; exit 1; fi if [ -z "$USERNAME" ]; then echo "Error: SERVER_USERNAME is not set!"; exit 1; fi if [ -z "$PASSWORD" ]; then echo "Error: SERVER_PASSWORD is not set!"; exit 1; fi echo "Secrets are correctly loaded." - name: Install SSH Tools run: | if command -v apk &> /dev/null; then apk add --no-cache openssh-client sshpass elif command -v apt-get &> /dev/null; then apt-get update -y && apt-get install -y sshpass openssh-client else echo "Unknown package manager. Checking if sshpass is already installed..." fi if ! command -v sshpass &> /dev/null; then echo "Error: sshpass not found and installation failed."; exit 1; fi - name: Deploy via SSH env: SSHPASS: ${{ secrets.SERVER_PASSWORD }} run: | sshpass -e ssh -o StrictHostKeyChecking=no -p 22 ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_HOST }} << 'EOF' set -e echo "📂 Entering project directory..." cd /root/V2_micropython/ echo "⬇️ Pulling latest code..." git pull echo "📂 Entering websocket_server directory..." cd websocket_server echo "🔄 Restarting Docker services..." if docker compose version &> /dev/null; then docker compose down docker compose up -d docker compose ps else docker-compose down docker-compose up -d docker-compose ps fi echo "✅ Deployment Success!" EOF