From a45284aa8c62a45c06d071561fc73c94e010bccc Mon Sep 17 00:00:00 2001 From: EnCoach Deploy Date: Mon, 27 Apr 2026 22:58:03 +0200 Subject: [PATCH] =?UTF-8?q?ci:=20initialize=20v4=20repo=20=E2=80=94=20fixe?= =?UTF-8?q?d=20Dockerfile,=20full=20requirements,=20deploy=20pipeline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy.yml | 64 +++++++++++++++++++++++++++++++++++++ .gitignore | 29 +++++++++++++++++ Dockerfile | 2 +- requirements.txt | 3 ++ 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/deploy.yml create mode 100644 .gitignore diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..f7230c8 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,64 @@ +name: Deploy Backend to Staging + +on: + push: + branches: [main] + +jobs: + deploy: + name: Deploy backend to staging + runs-on: self-hosted + steps: + - name: Pull latest code + run: | + cd /opt/encoach/encoach_backend_v4 + git fetch origin + git reset --hard origin/main + echo "Deployed: $(git log -1 --oneline)" + + - name: Build Odoo image + run: | + cd /opt/encoach/encoach_backend_v4 + cp /opt/encoach/overrides/odoo.conf ./odoo.conf + docker compose \ + -f docker-compose.yml \ + -f /opt/encoach/overrides/encoach.override.yml \ + build odoo + rm -f ./odoo.conf + + - name: Run DB migrations + run: | + MODULES=$(docker exec encoach-v4-db psql -U odoo -d encoach_v2 -tAc \ + "SELECT string_agg(name, ',') FROM ir_module_module WHERE state='installed' AND name LIKE 'encoach%';") + echo "Upgrading modules: $MODULES" + docker run --rm \ + --network encoach_backend_v4_default \ + -v /opt/encoach/overrides/odoo.conf:/etc/odoo/odoo.conf:ro \ + -v /opt/encoach/encoach_backend_v4:/mnt/extra-addons:ro \ + -v /opt/encoach/encoach_backend_v4/openeducat_erp-19.0:/mnt/extra-addons/openeducat_erp-19.0:ro \ + -v encoach_backend_v4_odoo-web-data:/var/lib/odoo \ + encoach-backend:latest \ + odoo -u "$MODULES" --stop-after-init 2>&1 | tail -20 + + - name: Restart Odoo + run: | + cd /opt/encoach/encoach_backend_v4 + docker compose \ + -f docker-compose.yml \ + -f /opt/encoach/overrides/encoach.override.yml \ + up -d --no-deps odoo + + - name: Smoke test + run: | + echo "Polling Odoo /api/health (max 180s)..." + STATUS="000" + for i in $(seq 1 18); do + STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 http://localhost:8069/api/health 2>/dev/null || echo "000") + [ "$STATUS" = "200" ] && echo "Odoo healthy after $((i*10))s" && break + echo " attempt $i: $STATUS — waiting 10s..." + sleep 10 + done + [ "$STATUS" != "200" ] && echo "ERROR: Odoo still $STATUS after 180s" && exit 1 + FE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 http://localhost:3000/ 2>/dev/null || echo "000") + [ "$FE" != "200" ] && echo "ERROR: Frontend $FE" && exit 1 + echo "All OK — Odoo=200 Frontend=$FE" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4349f75 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Odoo config — managed on server, never commit +odoo.conf +odoo-docker.conf +odoo-docker.conf.bak + +# Postgres data +pgdata/ +pgdata_bak*/ + +# Python +__pycache__/ +*.pyc +*.pyo +venv/ +.env + +# OS +.DS_Store +*.pdf + +# Frontend build artifacts (frontend has its own repo) +frontend/ +node_modules/ +dist/ + +# Local dev files +backups/ +data/ +miniconda3/ diff --git a/Dockerfile b/Dockerfile index d805796..9c8aca6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM odoo:19.0 USER root COPY requirements.txt /tmp/requirements.txt -RUN pip3 install --no-cache-dir -r /tmp/requirements.txt +RUN pip3 install --break-system-packages --no-cache-dir --ignore-installed typing_extensions -r /tmp/requirements.txt COPY custom_addons /opt/odoo/custom_addons COPY odoo.conf /etc/odoo/odoo.conf diff --git a/requirements.txt b/requirements.txt index b970e6a..a96ba97 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,6 @@ reportlab>=4.0.0 Pillow>=10.0.0 pgvector>=0.2.0 psycopg2-binary>=2.9.0 +langgraph>=0.2.0 +langchain-core>=0.3.0 +sentence_transformers>=2.7.0