Compare commits

...

4 Commits

Author SHA1 Message Date
4a6dc37854 ci: fix workflows - prod deploys to bodytrack/, dev to bodytrack-dev/
All checks were successful
Deploy Development / deploy (push) Successful in 1m9s
Deploy Production / deploy (push) Successful in 51s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 13s
2026-03-17 13:11:53 +01:00
eadc0ea39c feat: add dev environment docker-compose
All checks were successful
Deploy Development / deploy (push) Successful in 56s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 13s
2026-03-17 13:10:24 +01:00
1d169b1228 ci: fix test workflow - use local Node.js
All checks were successful
Deploy Development / deploy (push) Successful in 56s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 1m15s
2026-03-17 12:58:56 +01:00
b409a22322 ci: add prod and dev deployment workflows
Some checks failed
Deploy Development / deploy (push) Successful in 55s
Build Test / build-frontend (push) Failing after 2s
Build Test / lint-backend (push) Failing after 1s
2026-03-17 12:53:32 +01:00
5 changed files with 95 additions and 61 deletions

View File

@ -0,0 +1,21 @@
name: Deploy Development
on:
push:
branches: [develop]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy to Development
run: |
set -e
echo "=== Deploying to DEVELOPMENT ==="
cd /home/lars/docker/bodytrack-dev
git pull origin develop
docker compose -f docker-compose.dev-env.yml build --no-cache
docker compose -f docker-compose.dev-env.yml up -d
sleep 5
curl -sf http://localhost:8099/api/auth/status && echo "✓ DEV API healthy"
echo "=== DEV Deploy complete ==="

View File

@ -0,0 +1,21 @@
name: Deploy Production
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy to Production
run: |
set -e
echo "=== Deploying to PRODUCTION ==="
cd /home/lars/docker/bodytrack
git pull origin main
docker compose -f docker-compose.yml build --no-cache
docker compose -f docker-compose.yml up -d
sleep 5
curl -sf http://localhost:8002/api/auth/status && echo "✓ PROD API healthy"
echo "=== PROD Deploy complete ==="

View File

@ -1,38 +0,0 @@
name: Deploy to Raspberry Pi
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.DEPLOY_SSH_KEY }}
script: |
set -e
cd /home/lars/docker/mitai
echo "=== Pulling latest code ==="
git pull origin main
echo "=== Rebuilding containers ==="
docker compose build --no-cache
echo "=== Restarting ==="
docker compose up -d
echo "=== Health check ==="
sleep 5
docker ps | grep jinkendo
curl -sf http://localhost:8002/api/auth/status | python3 -c "import sys,json; d=json.load(sys.stdin); print('✓ API healthy')" || echo "⚠ API check failed"
echo "=== Deploy complete ==="

View File

@ -3,31 +3,22 @@ name: Build Test
on: on:
push: push:
branches: [main, develop] branches: [main, develop]
pull_request:
branches: [main]
jobs: jobs:
build-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install & Build
working-directory: ./frontend
run: |
npm install
npm run build
- name: Check build output
run: ls -la frontend/dist/
lint-backend: lint-backend:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - name: Check backend syntax
- uses: actions/setup-python@v4 run: |
with: python3 -m py_compile /home/lars/docker/bodytrack/backend/main.py
python-version: '3.12' echo "✓ Backend syntax OK"
- name: Check syntax
run: python3 -m py_compile backend/main.py && echo "✓ Backend syntax OK" build-frontend:
runs-on: ubuntu-latest
steps:
- name: Build frontend
run: |
cd /home/lars/docker/bodytrack/frontend
npm install
npm run build
echo "✓ Frontend build OK"

View File

@ -0,0 +1,39 @@
services:
backend:
build: ./backend
container_name: dev-mitai-api
restart: unless-stopped
ports:
- "8099:8000"
volumes:
- bodytrack_bodytrack-data:/app/data
- bodytrack_bodytrack-photos:/app/photos
environment:
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
- OPENROUTER_MODEL=${OPENROUTER_MODEL:-anthropic/claude-sonnet-4}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT:-587}
- SMTP_USER=${SMTP_USER}
- SMTP_PASS=${SMTP_PASS}
- SMTP_FROM=${SMTP_FROM}
- APP_URL=${APP_URL_DEV:-https://dev.mitai.jinkendo.de}
- DATA_DIR=/app/data
- PHOTOS_DIR=/app/photos
- ALLOWED_ORIGINS=${ALLOWED_ORIGINS_DEV:-*}
- ENVIRONMENT=development
frontend:
build: ./frontend
container_name: dev-mitai-ui
restart: unless-stopped
ports:
- "3099:80"
depends_on:
- backend
volumes:
bodytrack_bodytrack-data:
external: true
bodytrack_bodytrack-photos:
external: true