diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1668c70195d3bde777c4843787cadda53c8bbbc3..dc68ed7dbc884ebfa1215fc3fdb9207790d1b1f5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,6 +17,7 @@ stages: - build-frontend - test-backend - test-frontend + - test-deployment - build-docker - scan-docker - release-docker @@ -121,6 +122,23 @@ test-frontend: path: ./dbrepo-ui/coverage/cobertura-coverage.xml coverage: '/TOTAL.*?([0-9]{1,3})%/' +test-default-deployment: + stage: test-deployment + needs: + - test-frontend + script: + - "rm -f .env" + - "docker compose up -d || docker compose down" + coverage: '/TOTAL.*?([0-9]{1,3})%/' + +test-env-deployment: + stage: test-deployment + needs: + - test-frontend + script: + - "cp .env.unix.example .env" + - "docker compose up -d || docker compose down" + scan-analyse-service: stage: scan-docker needs: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 6f85ad5ef428398878d9ed33a45ac4b0d0df2e16..7f54196d6105ee2835788149600649975510c2fd 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -41,8 +41,9 @@ services: - ./setup-schema_local.sql:/docker-entrypoint-initdb.d/setup-schema_local.sql ports: - "3306:3306" - env_file: - - .env + environment: + MARIADB_DATABASE: "${METADATA_DB:-fda}" + MARIADB_ROOT_PASSWORD: "${METADATA_PASSWORD:-dbrepo}" healthcheck: test: mysqladmin ping --user="$METADATA_USERNAME" --password="$METADATA_PASSWORD" --silent interval: 10s @@ -55,18 +56,16 @@ services: restart: "no" container_name: dbrepo-data-db hostname: data-db - image: mariadb:10.5 + image: bitnami/mariadb:10.5 networks: core: volumes: - data-db-data:/bitnami/mariadb - - "${SHARED_FILESYSTEM}:/tmp" + - "${SHARED_FILESYSTEM:-/tmp}:/tmp" ports: - "3307:3306" - env_file: - - .env environment: - - MARIADB_ROOT_PASSWORD=$USER_DB_PASSWORD + MARIADB_ROOT_PASSWORD: "${USER_DB_PASSWORD:-dbrepo}" healthcheck: test: mysqladmin ping --user="$USER_DB_USERNAME" --password="$USER_DB_PASSWORD" --silent interval: 10s @@ -86,11 +85,9 @@ services: - auth-db-data:/bitnami/mariadb ports: - "3308:3306" - env_file: - - .env environment: - - MARIADB_ROOT_PASSWORD=$AUTH_PASSWORD - - MARIADB_DATABASE=$AUTH_DB + MARIADB_DATABASE: "${AUTH_DB:-keycloak}" + MARIADB_ROOT_PASSWORD: "${AUTH_PASSWORD:-dbrepo}" healthcheck: test: mysqladmin ping --user="$AUTH_USERNAME" --password="$AUTH_PASSWORD" --silent interval: 10s @@ -108,11 +105,9 @@ services: - "--base-path=/api/upload/files/" networks: core: - env_file: - - .env volumes: - upload-service-data:/data - - "${SHARED_FILESYSTEM}:/srv/tusd-data/data" + - "${SHARED_FILESYSTEM:-/tmp}:/srv/tusd-data/data" logging: driver: json-file @@ -126,12 +121,16 @@ services: ports: - "8443:8443" - "8080:8080" - env_file: - - .env + environment: + AUTH_DB: "${AUTH_DB:-keycloak}" + KC_DB_USERNAME: "${AUTH_USERNAME:-root}" + KC_DB_PASSWORD: "${AUTH_PASSWORD:-dbrepo}" + KEYCLOAK_ADMIN: "${KEYCLOAK_ADMIN:-fda}" + KEYCLOAK_ADMIN_PASSWORD: "${KEYCLOAK_ADMIN_PASSWORD:-fda}" volumes: - authentication-service-data:/opt/keycloak/data/ depends_on: - dbrepo-metadata-db: + dbrepo-auth-db: condition: service_healthy logging: driver: json-file @@ -143,12 +142,40 @@ services: image: dbrepo/metadata-service:latest networks: core: - env_file: - - .env volumes: - - "${SHARED_FILESYSTEM}:/tmp" + - "${SHARED_FILESYSTEM:-/tmp}:/tmp" ports: - "9099:9099" + environment: + ADMIN_MAIL: "${ADMIN_MAIL:-noreply@localhost}" + BASE_URL: "${BASE_URL:-http://localhost}" + GRANT_PRIVILEGES: "${GRANT_PRIVILEGES:-SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE}" + BROKER_CONSUMERS: "${BROKER_CONSUMERS:-2}" + BROKER_ENDPOINT: "${BROKER_ENDPOINT:-http://broker-service:15672}" + BROKER_USERNAME: "${BROKER_USERNAME:-fda}" + BROKER_PASSWORD: "${BROKER_PASSWORD:-fda}" + DELETED_RECORD: "${DELETED_RECORD:-persistent}" + EARLIEST_DATESTAMP: "${EARLIEST_DATESTAMP:-2022-09-17T18:23:00Z}" + GRANULARITY: "${GRANULARITY:-YYYY-MM-DDThh:mm:ssZ}" + JWT_ISSUER: "${JWT_ISSUER:-http://localhost/realms/dbrepo}" + JWT_PUBKEY: "${JWT_PUBKEY:-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB}" + LOG_LEVEL: "${LOG_LEVEL:-debug}" + METADATA_DB: "${METADATA_DB:-fda}" + METADATA_HOST: "${METADATA_HOST:-metadata-db}" + METADATA_JDBC_EXTRA_ARGS: "${METADATA_JDBC_EXTRA_ARGS:-}" + METADATA_USERNAME: "${METADATA_USERNAME:-root}" + METADATA_PASSWORD: "${METADATA_PASSWORD:-dbrepo}" + NOT_SUPPORTED_KEYWORDS: "${NOT_SUPPORTED_KEYWORDS:-\\*,AVG,BIT_AND,BIT_OR,BIT_XOR,COUNT,COUNTDISTINCT,GROUP_CONCAT,JSON_ARRAYAGG,JSON_OBJECTAGG,MAX,MIN,STD,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VARIANCE,VAR_POP,VAR_SAMP,--}" + PID_BASE: "${PID_BASE:-http://localhost/pid/}" + REPOSITORY_NAME: "${REPOSITORY_NAME:-Example Repository}" + SEARCH_USERNAME: "${SEARCH_USERNAME:-admin}" + SEARCH_PASSWORD: "${SEARCH_PASSWORD:-admin}" + SHARED_FILESYSTEM: "${SHARED_FILESYSTEM:-/tmp}" + USER_NETWORK: "${USER_NETWORK:-userdb}" + WEBSITE: "${WEBSITE:-http://localhost}" + KEYCLOAK_HOST: "${KEYCLOAK_HOST:-http://authentication-service:8080}" + KEYCLOAK_ADMIN: "${KEYCLOAK_ADMIN:-fda}" + KEYCLOAK_ADMIN_PASSWORD: "${KEYCLOAK_ADMIN_PASSWORD:-fda}" healthcheck: test: wget -qO- localhost:9099/actuator/health/readiness | grep -q "UP" || exit 1 interval: 10s @@ -173,10 +200,8 @@ services: core: ports: - "5000:5000" - env_file: - - .env volumes: - - "${SHARED_FILESYSTEM}:/tmp" + - "${SHARED_FILESYSTEM:-/tmp}:/tmp" logging: driver: json-file @@ -190,8 +215,6 @@ services: ports: - "5672:5672" - "15672:15672" - env_file: - - .env depends_on: dbrepo-authentication-service: condition: service_healthy @@ -209,8 +232,6 @@ services: core: ports: - 9200:9200 - env_file: - - .env healthcheck: test: curl -s localhost:9200/_cat/indices || exit 1 interval: 10s @@ -238,8 +259,22 @@ services: networks: core: public: - env_file: - - .env + environment: + BROKER_USERNAME: "${BROKER_USERNAME:-fda}" + BROKER_PASSWORD: "${BROKER_PASSWORD:-fda}" + BROKER_LOGIN_URL: "${BROKER_LOGIN_URL:-/broker/}" + KEYCLOAK_LOGIN_URL: "${KEYCLOAK_LOGIN_URL:-/api/auth/}" + SHARED_FILESYSTEM: "${SHARED_FILESYSTEM:-/tmp}" + LOGO: "${LOGO:-/logo.png}" + SEARCH_USERNAME: "${SEARCH_USERNAME:-admin}" + SEARCH_PASSWORD: "${SEARCH_PASSWORD:-admin}" + VERSION: "${VERSION:-${TAG}}" + TITLE: "${TITLE:-Database Repository}" + ICON: "${ICON:-/favicon.ico}" + DBREPO_CLIENT_ID: "${DBREPO_CLIENT_ID:-dbrepo-client}" + DBREPO_CLIENT_SECRET: "${DBREPO_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" + UPLOAD_PATH: "${UPLOAD_PATH:-/tmp/}" + FORCE_SSL: "${FORCE_SSL:-false}" depends_on: dbrepo-upload-service: condition: service_started @@ -274,3 +309,34 @@ services: condition: service_started logging: driver: json-file + + dbrepo-search-sync-agent: + restart: "no" + container_name: dbrepo-search-sync-agent + hostname: search-startup-agent + image: dbrepo/search-sync-agent:latest + networks: + core: + environment: + METADATA_DB: ${METADATA_DB:-fda} + METADATA_HOST: ${METADATA_HOST:-metadata-db} + METADATA_JDBC_EXTRA_ARGS: ${METADATA_JDBC_EXTRA_ARGS:-} + METADATA_PASSWORD: ${METADATA_PASSWORD:-dbrepo} + METADATA_USERNAME: ${METADATA_USERNAME:-root} + SEARCH_USERNAME: ${SEARCH_USERNAME:-fda} + SEARCH_PASSWORD: ${SEARCH_PASSWORD:-fda} + LOG_LEVEL: ${LOG_LEVEL:-debug} + healthcheck: + test: wget -qO- localhost:9050/actuator/health/readiness | grep -q "UP" || exit 1 + interval: 10s + timeout: 5s + retries: 12 + depends_on: + dbrepo-metadata-db: + condition: service_healthy + dbrepo-search-db: + condition: service_started + dbrepo-authentication-service: + condition: service_healthy + logging: + driver: json-file \ No newline at end of file