From e027252ce7711d3b1d0d1cd388fd0e0a8de7253d Mon Sep 17 00:00:00 2001 From: Brieuc Dubois <git@bhasher.com> Date: Wed, 12 Feb 2025 11:07:50 +0100 Subject: [PATCH] Dev server --- .gitlab-ci.yml | 26 ++++++++++++++++++++- backend/alembic.dev.ini | 49 ++++++++++++++++++++++++++++++++++++++++ backend/alembic.prod.ini | 49 ++++++++++++++++++++++++++++++++++++++++ docker-compose.yaml | 41 +++++++++++++++++++++++++++++++-- scripts/update.dev.sh | 20 ++++++++++++++++ scripts/update.sh | 7 ++++-- 6 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 backend/alembic.dev.ini create mode 100644 backend/alembic.prod.ini create mode 100644 scripts/update.dev.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b759509..17bebf24 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -41,7 +41,31 @@ docker_deploy: stage: deploy only: - main - - feat/cd image: alpine:latest script: - echo "/mnt/data/languagelab/repo/scripts/update.sh" > /mnt/pipeline + +build-dev: + stage: build + only: + - dev + image: docker:latest + services: + - docker:dind + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + parallel: + matrix: + - COMPONENT: [frontend, backend] + script: + - docker build -t $CI_REGISTRY/sbibauw/languagelab:${COMPONENT}-dev $COMPONENT + - docker push $CI_REGISTRY/sbibauw/languagelab:${COMPONENT}-dev + +docker_deploy-dev: + stage: deploy + only: + - dev + - feat/cd + image: alpine:latest + script: + - echo "/mnt/data/languagelab/repo/scripts/update.dev.sh" > /mnt/pipeline diff --git a/backend/alembic.dev.ini b/backend/alembic.dev.ini new file mode 100644 index 00000000..1d465ade --- /dev/null +++ b/backend/alembic.dev.ini @@ -0,0 +1,49 @@ + +[alembic] +script_location = alembic + +prepend_sys_path = . + +version_path_separator = os + +sqlalchemy.url = sqlite:////mnt/data/languagelab/db.dev.sqlite3 + +[post_write_hooks] +hooks = black +black.type = console_scripts +black.entrypoint = black +black.options = -l 79 + +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARNING +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARNING +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/backend/alembic.prod.ini b/backend/alembic.prod.ini new file mode 100644 index 00000000..9b45a196 --- /dev/null +++ b/backend/alembic.prod.ini @@ -0,0 +1,49 @@ + +[alembic] +script_location = alembic + +prepend_sys_path = . + +version_path_separator = os + +sqlalchemy.url = sqlite:////mnt/data/languagelab/db.sqlite3 + +[post_write_hooks] +hooks = black +black.type = console_scripts +black.entrypoint = black +black.options = -l 79 + +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARNING +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARNING +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/docker-compose.yaml b/docker-compose.yaml index f3907d43..f43f4dab 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -12,7 +12,6 @@ services: labels: - "traefik.enable=true" - "traefik.http.routers.frontend.rule=Host(`languagelab.be`)" - #- "traefik.http.routers.frontend.rule=Host(`languagelab.sipr.ucl.ac.be`)" - "traefik.http.routers.frontend.tls=true" - "traefik.http.services.frontend.loadbalancer.server.port=8080" @@ -38,7 +37,45 @@ services: - "traefik.http.routers.backend.tls=true" - "traefik.http.services.backend.loadbalancer.server.port=8000" - "traefik.http.routers.backend.rule=Host(`languagelab.be`) && (PathPrefix(`/tmp-api`) || PathPrefix(`/docs`) || PathPrefix(`/openapi.json`))" - #- "traefik.http.routers.backend.rule=Host(`languagelab.sipr.ucl.ac.be`) && (PathPrefix(`/tmp-api`) || PathPrefix(`/docs`) || PathPrefix(`/openapi.json`))" + + languagelab-frontend-dev: + container_name: languagelab-frontend-dev + image: registry.forge.uclouvain.be/sbibauw/languagelab:frontend-dev + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + depends_on: + - languagelab-backend-dev + networks: + - external + labels: + - "traefik.enable=true" + - "traefik.http.routers.frontend.rule=Host(`beta.dev.languagelab.be`)" + - "traefik.http.routers.frontend.tls=true" + - "traefik.http.services.frontend.loadbalancer.server.port=8080" + + languagelab-backend-dev: + container_name: languagelab-backend-dev + image: registry.forge.uclouvain.be/sbibauw/languagelab:backend-dev + environment: + - DATABASE_URL=sqlite:////data/db.dev.sqlite3 + - JWT_SECRET_KEY=${LANGUAGELAB_JWT_SECRET_KEY} + - JWT_REFRESH_SECRET_KEY=${LANGUAGELAB_JWT_REFRESH_SECRET_KEY} + - ADMIN_EMAIL=${LANGUAGELAB_ADMIN_EMAIL} + - ADMIN_PASSWORD=${LANGUAGELAB_ADMIN_PASSWORD} + - CALCOM_SECRET=${LANGUAGELAB_CALCOM_SECRET} + - ALLOWED_ORIGINS=https://beta.dev.languagelab.be,https://api.dev.languagelab.be + volumes: + - /mnt/data/languagelab/backend:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + networks: + - external + labels: + - "traefik.enable=true" + - "traefik.http.routers.backend.tls=true" + - "traefik.http.services.backend.loadbalancer.server.port=8000" + - "traefik.http.routers.backend.rule=Host(`beta.dev.languagelab.be`) && (PathPrefix(`/tmp-api`) || PathPrefix(`/docs`) || PathPrefix(`/openapi.json`))" traefik: container_name: traefik diff --git a/scripts/update.dev.sh b/scripts/update.dev.sh new file mode 100644 index 00000000..30504586 --- /dev/null +++ b/scripts/update.dev.sh @@ -0,0 +1,20 @@ +echo "STARTED DEV UPDATE AT $(date)" > /tmp/docker_update + +cd /mnt/data/languagelab/repo/ +git checkout dev +git pull + +cd /mnt/data/languagelab/repo/ +source app/.env/bin/activate +cd backend +alembic -c alembic.dev.ini upgrade head + +cd /mnt/data/languagelab/repo/ +docker compose up -d + +cd /mnt/data/languagelab/repo/scripts/surveys +python3 survey_maker.py < .creds + +git checkout main + +echo "END DEV UPDATE AT $(date)" >> /tmp/docker_update diff --git a/scripts/update.sh b/scripts/update.sh index 13f7acad..2532ce3e 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -1,12 +1,15 @@ echo "STARTED UPDATE AT $(date)" > /tmp/docker_update +cd /mnt/data/languagelab/repo/ +git checkout main +git pull + cd /mnt/data/languagelab/repo/ source app/.env/bin/activate cd backend -alembic upgrade head +alembic -c alembic.prod.ini upgrade head cd /mnt/data/languagelab/repo/ -git pull docker compose up -d cd /mnt/data/languagelab/repo/scripts/surveys -- GitLab