service-llm-private/.github/workflows/deploy.yml
2026-05-12 23:44:16 +02:00

91 lines
2.8 KiB
YAML

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"