name: Deploy to Infomaniak on: push: branches: - main workflow_dispatch: env: APP_DIR: /opt/ollama-webapp SERVICE_NAME: ollama-webapp SERVER_HOST: 83.228.200.109 SERVER_USER: ubuntu jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H ${{ env.SERVER_HOST }} >> ~/.ssh/known_hosts - name: Deploy files to server run: | rsync -avz --delete \ -e "ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no" \ --exclude '.git' \ --exclude '.github' \ --exclude '__pycache__' \ --exclude '*.pyc' \ --exclude 'venv' \ --exclude '.env' \ --exclude 'logs' \ ./ ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }}:${{ env.APP_DIR }}/app/ - name: Install dependencies and restart service run: | ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }} << 'ENDSSH' echo "Installing dependencies..." cd /opt/ollama-webapp ./venv/bin/pip install -r app/requirements.txt --quiet --upgrade echo "Restarting service..." sudo systemctl restart ollama-webapp echo "Waiting for service to start..." sleep 5 echo "Service status:" sudo systemctl status ollama-webapp --no-pager -l echo "Deployment complete!" ENDSSH - name: Health Check run: | echo "Running health check..." sleep 3 HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ http://${{ env.SERVER_HOST }}:5000/api/health || echo "000") if [ "$HTTP_STATUS" = "200" ]; then echo "Health check passed! (HTTP $HTTP_STATUS)" else echo "Health check failed! (HTTP $HTTP_STATUS)" exit 1 fi - name: Deployment Summary if: success() run: | echo "Deployment successful!" echo "" echo "App URL: http://${{ env.SERVER_HOST }}:5000" echo "Health: http://${{ env.SERVER_HOST }}:5000/api/health"