service-llm-private/.github/workflows/deploy.yml
2026-02-06 02:00:35 +01:00

90 lines
No EOL
2.8 KiB
YAML

name: Deploy to Infomaniak
on:
push:
branches:
- main
workflow_dispatch: # Manueller Trigger möglich
env:
APP_DIR: /opt/ollama-webapp
SERVICE_NAME: ollama-webapp
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 1. Code auschecken
- name: Checkout code
uses: actions/checkout@v4
# 2. SSH Setup
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts
# 3. Dateien zum Server kopieren
- 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' \
./ ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:${{ env.APP_DIR }}/app/
# 4. Dependencies installieren und Service neu starten
- name: Install dependencies and restart service
run: |
ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \
${{ secrets.SERVER_USER }}@${{ secrets.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
# 5. Health Check
- name: Health Check
run: |
echo "🏥 Running health check..."
sleep 3
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
http://${{ secrets.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
# 6. Deployment Summary
- name: Deployment Summary
if: success()
run: |
echo "🎉 Deployment successful!"
echo ""
echo "📍 App URL: http://${{ secrets.SERVER_HOST }}:5000"
echo "📍 Health: http://${{ secrets.SERVER_HOST }}:5000/api/health"
echo "📍 Ollama: http://${{ secrets.SERVER_HOST }}:5000/api/ollama/status"