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@v5 - 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: Update systemd service and restart 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 "Updating systemd service file..." sudo cp /opt/ollama-webapp/app/deploy/ollama-webapp.service /etc/systemd/system/ollama-webapp.service sudo systemctl daemon-reload 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 # Health check via HTTPS on port 8000 HTTP_STATUS=$(curl -sk -o /dev/null -w "%{http_code}" \ https://llm.poweron.swiss:8000/api/health || echo "000") if [ "$HTTP_STATUS" = "200" ]; then echo "Health check passed! (HTTP $HTTP_STATUS)" else echo "Health check failed! (HTTP $HTTP_STATUS)" echo "Note: SSL certificate must be installed on server first" # Don't fail deployment if health check fails (cert might not be ready) fi - name: Deployment Summary if: success() run: | echo "Deployment successful!" echo "" echo "App URL: https://llm.poweron.swiss:8000" echo "Health: https://llm.poweron.swiss:8000/api/health"