| name: Deploy Python Chatbot Backend | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4.2.2 | |
| - name: Setup SSH | |
| uses: webfactory/ssh-agent@v0.9.1 | |
| with: | |
| ssh-private-key: ${{ secrets.VPS_SSH_KEY }} | |
| - name: Add server to known hosts | |
| run: | | |
| mkdir -p ~/.ssh | |
| ssh-keyscan -H ${{ secrets.VPS_IP }} >> ~/.ssh/known_hosts | |
| - name: Sync app files to server | |
| run: | | |
| REMOTE_SERVER="${{ secrets.VPS_USER }}@${{ secrets.VPS_IP }}" | |
| rsync -avz --exclude='.git' --exclude='.env' --exclude='__pycache__' \ | |
| -e "ssh" ./ $REMOTE_SERVER:/home/ubuntu/app/ | |
| - name: Install dependencies and restart service | |
| run: | | |
| REMOTE_SERVER="${{ secrets.VPS_USER }}@${{ secrets.VPS_IP }}" | |
| ssh $REMOTE_SERVER << 'EOF' | |
| /home/ubuntu/venv/bin/pip install -q -r /home/ubuntu/app/requirements.txt && \ | |
| sudo systemctl restart chatbot-python.service | |
| EOF | |