diff --git a/.env.example b/.env.example new file mode 100644 index 0000000000000000000000000000000000000000..94c2b7cd3e738eda264f488b022452b5381c0f25 --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ + +PROJECT_NAME=auto-evaluation +PROJECT_HOSTNAME=autoeval.grandlyon.localhost +CERT_SIZE=1 diff --git a/.gitignore b/.gitignore index f996257a0cd54499fc199268a187f1f10704e357..ecdc47938fb3d9f92883097636f095a301be8b66 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ package-lock.json /libpeerconnection.log testem.log /typings - +/.env # System files .DS_Store Thumbs.db diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..17862bf68b48cdd802d26b474cdf29d2fe458249 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,36 @@ +image: node:20 + +stages: + - build + - release + +# Build job +build: + stage: build + script: + - npm install # install deps + - npm run build # Compile + artifacts: + paths: + - dist/ # we save the compiled files in an artefact + expire_in: 1 day + only: + - tags # triggered with tag + +# Release job +release: + stage: release + needs: [build] + image: registry.gitlab.com/gitlab-org/release-cli:latest + script: + - echo "Création de la release pour le tag $CI_COMMIT_TAG" + release: + tag_name: $CI_COMMIT_TAG + name: "Release $CI_COMMIT_TAG" + description: "Release générée automatiquement pour le tag $CI_COMMIT_TAG" + assets: + links: + - name: "Télécharger la version compilée" + url: "${CI_PROJECT_URL}/-/jobs/artifacts/${CI_COMMIT_TAG}/download?job=build" + only: + - tags diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..78a4d8d1065612a3937fc664edc8c8307354ebf7 --- /dev/null +++ b/Makefile @@ -0,0 +1,47 @@ + +ifneq (,$(wildcard ./.env)) + include .env +endif + +.PHONY: config +config: + cp .env.example .env + + +# Docker +up: + docker compose up -d + +down: + docker compose down + +ps: + docker compose ps + +rebuild: + docker compose down --remove-orphans + docker compose build --no-cache + docker compose up -d + + +# Mkcert + +define config_toml +[[tls.certificates]] +certFile = "/certs/${PROJECT_HOSTNAME}+${CERT_SIZE}.pem" +keyFile = "/certs/${PROJECT_HOSTNAME}+${CERT_SIZE}-key.pem" +endef + +export config_toml + +npm-install: + docker compose run --rm node npm install + +certs: + mkdir -p ${HOME}/.dockerdev/traefik/certs ${HOME}/.dockerdev/traefik/conf + mkcert ${PROJECT_HOSTNAME} *.${PROJECT_HOSTNAME} ${CERT_ALIASES} + mv *.pem ~/.dockerdev/traefik/certs + @echo "$$config_toml" > ~/.dockerdev/traefik/conf/${PROJECT_NAME}-certs.toml + +install: config certs up + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..547c3b646e5ebf8f77a07b67b591aa3165338fae --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,21 @@ +services: + node: + image: trion/ng-cli:17.2.1 + restart: unless-stopped + volumes: + - ./:/app + working_dir: /app + command: ng serve --host 0.0.0.0 --port 4200 + networks: + - webgateway + labels: + - "traefik.enable=true" + - "traefik.http.routers.${PROJECT_NAME}-front.rule=Host(`${PROJECT_HOSTNAME}`)" + - "traefik.http.routers.${PROJECT_NAME}-front.tls=true" + - "traefik.http.routers.${PROJECT_NAME}-front.entrypoints=websecure" + - "traefik.http.services.${PROJECT_NAME}-front.loadbalancer.server.port=4200" + +networks: + webgateway: + external: true +