diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94aff53d0a78eceb3ce21e65c9c2d1021b18c4db..404be2451b7fffe99a0c2b4fe4229eb34b3d904e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,7 +50,6 @@ deploy: npx @dotenvx/dotenvx@0.45.0 decrypt mv .env.production ../../.env rm .env.keys - cp ../../.env ../.env # Deploy - cd ../../ diff --git a/API b/API index 9839397a3be3239080d0fa59244e1cdbd692de08..64a454911069e285f830a57db85ca26165ab965f 160000 --- a/API +++ b/API @@ -1 +1 @@ -Subproject commit 9839397a3be3239080d0fa59244e1cdbd692de08 +Subproject commit 64a454911069e285f830a57db85ca26165ab965f diff --git a/docker-compose.yml b/docker-compose.yml index 8ad62004e9e4774c882b52a7d176c6006e05236f..e5a0ba2ab904c3a2b78228285bba052a2ca61bed 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.8' services: dojo-database: container_name: dojo-database @@ -34,7 +33,7 @@ services: deploy: resources: limits: - cpus: '3.0' + cpus: ${CPU_LIMIT} build: context: ./API/ dockerfile: Dockerfile_ExpressAPI diff --git a/env.example b/env.example new file mode 100644 index 0000000000000000000000000000000000000000..614324d81f5f8388774eeb5c790f3efe569f6408 --- /dev/null +++ b/env.example @@ -0,0 +1,43 @@ +################################################################################# +# This file have to be copied to .env and filled with the correct values +################################################################################# + + +########################### Database env vars +DATABASE_ROOT_PASSWORD=xxxxxxxxxxxxxx + + +########################### Session env vars +JWT_SECRET_KEY=xxxxxxxxxxxxxx + +LOGIN_GITLAB_CLIENT_ID=xxxxxxxxxxxx +LOGIN_GITLAB_CLIENT_SECRET=xxxxxxxxxxx + + +########################### Checkers env vars +DOCKERHUB_REPO_ASSIGNMENT_CHECKER=xxxxxxxxxxxxx # HEPIA example: dojohesso/dojo_assignment_checker +DOCKERHUB_REPO_EXERCISE_CHECKER=xxxxxxxxxxxxx # HEPIA example: dojohesso/dojo_exercise_checker + + +########################### Gitlab env vars +GITLAB_DOMAIN=xxxxxxxxxxx # HEPIA example: gitedu.hesge.ch +GITLAB_URL=https://${GITLAB_DOMAIN}/ +GITLAB_URLS='["${GITLAB_URL}"]' # All possible urls for the same gitlab instance (for example HEPIA have https://githepia.hesge.ch too so the value is : '["${GITLAB_URL}", "https://githepia.hesge.ch/"]'). +GITLAB_DOJO_ACCOUNT_ID=xxxx +GITLAB_DOJO_ACCOUNT_USERNAME=xxxxxxx +GITLAB_DOJO_ACCOUNT_TOKEN=xxxxxxxx +GITLAB_GROUP_ROOT_ID=xxxx +GITLAB_GROUP_TEMPLATES_ID=xxxxx +GITLAB_GROUP_ASSIGNMENTS_ID=xxxxx +GITLAB_GROUP_EXERCISES_ID=xxxxx +GITLAB_GROUP_DELETED_ASSIGNMENTS_ID=xxxxx +GITLAB_GROUP_DELETED_EXERCISES_ID=xxxxx + + + + + + +# WARNING: DO NOT MODIFY THE NEXT TWO LINES +DATABASE_CONNEXION_LIMIT_PER_PROCESS=2 +DATABASE_URL=mysql://root:${DATABASE_ROOT_PASSWORD}@dojo-database:3306/dojo?connection_limit=${DATABASE_CONNEXION_LIMIT_PER_PROCESS} \ No newline at end of file diff --git a/env.exemple b/env.exemple deleted file mode 100644 index 23dbce0c49fabf67dd9ac7b1670356f245049012..0000000000000000000000000000000000000000 --- a/env.exemple +++ /dev/null @@ -1,42 +0,0 @@ -########################### Server env vars -API_PORT=30992 -LOGS_FOLDER=logs - -########################### Database env vars -DATABASE_ROOT_PASSWORD=password -DATABASE_URL="mysql://root:password@dojo-database:port/database" - - -########################### Session env vars -JWT_SECRET_KEY=secret -SESSION_TIMEOUT=0 - -ROLES_WITH_TEACHING_STAFF_PERMISSIONS='["teacher", "adjsci", "colsci", "assi"]' - -########################### Gitlab env vars -GITLAB_API_URL=url -GITLAB_URLS='["url"]' -GITLAB_DOJO_ACCOUNT_ID=0 -GITLAB_DOJO_ACCOUNT_USERNAME=username -GITLAB_DOJO_ACCOUNT_TOKEN=token -GITLAB_GROUP_ROOT_ID=0 -GITLAB_GROUP_TEMPLATES_ID=0 -GITLAB_GROUP_ENONCES_ID=0 -GITLAB_GROUP_EXERCICES_ID=0 - -########################### Enonce env vars -ENONCE_DEFAULT_DESCRIPTION="description" -ENONCE_DEFAULT_INIT_README=false -ENONCE_DEFAULT_SHARED_RUNNERS_ENABLED=true -ENONCE_DEFAULT_VISIBILITY=internal -ENONCE_DEFAULT_WIKI_ENABLED=false -ENONCE_DEFAULT_TEMPLATE=https://{{USERNAME}}:{{TOKEN}}@url.git - -########################### Exercice env vars -EXERCICE_DEFAULT_DESCRIPTION="description" -EXERCICE_DEFAULT_VISIBILITY=private -EXERCICE_MAX_SAME_NAME=10 - -########################### App env vars -USER_PASSWORD_LENGTH=6 -USER_PASSWORD_SALT_ROUNDS=13 \ No newline at end of file diff --git a/infra b/infra index 55af933fb2169b8a560e6c5afca826d301e440e7..56ae464665e191864ba833c99502639e1488035b 100755 --- a/infra +++ b/infra @@ -23,13 +23,17 @@ if [ $? -ne 0 ]; then DOCKER_COMPOSE_COMMAND="docker-compose" fi -${DOCKER_COMPOSE_COMMAND} kill +CPU_LIMIT=$(($(nproc)-1)) +CPU_LIMIT=$(($CPU_LIMIT <= 0 ? 1 : $CPU_LIMIT)) + +CPU_LIMIT=${CPU_LIMIT} ${DOCKER_COMPOSE_COMMAND} kill # If argument is --run, run the docker compose file if [ "$1" = "--run" ]; then # Check if .env file exists if [ -f $ENV_FILE ]; then - ${DOCKER_COMPOSE_COMMAND} --env-file ${ENV_FILE} up --build -d + cp -f $ENV_FILE API/$ENV_FILE + CPU_LIMIT=${CPU_LIMIT} ${DOCKER_COMPOSE_COMMAND} --env-file ${ENV_FILE} up --build -d else echo "Need a file named ${ENV_FILE} providing environment variables." exit 2