From a6059faeea6973b7901461164984fe6b2bb5afce Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Nov 2025 19:20:32 +0100 Subject: [PATCH 1/7] add deploy step and script --- .gitea/workflows/be-img-build-and-push.yaml | 8 +- .gitea/workflows/scripts/deploy-backend.sh | 0 docker/docker-compose-dev.yml | 202 ++++++++++++++++++++ 3 files changed, 209 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/scripts/deploy-backend.sh create mode 100644 docker/docker-compose-dev.yml diff --git a/.gitea/workflows/be-img-build-and-push.yaml b/.gitea/workflows/be-img-build-and-push.yaml index 98d84dd..e32bb29 100644 --- a/.gitea/workflows/be-img-build-and-push.yaml +++ b/.gitea/workflows/be-img-build-and-push.yaml @@ -84,5 +84,11 @@ jobs: run: | docker images -a docker system prune -f + docker images echo "Cleanup done." - + + - name: Deploy to server via deploy script + run: | + chmod +x ./scripts/deploy-backend.sh + #./scripts/deploy-backend.sh ${{ gitea.actor }} ${{ vars.REGISTRY_URL }} my-app-backend v1.0.0 + ./scripts/deploy-backend.sh diff --git a/.gitea/workflows/scripts/deploy-backend.sh b/.gitea/workflows/scripts/deploy-backend.sh new file mode 100644 index 0000000..e69de29 diff --git a/docker/docker-compose-dev.yml b/docker/docker-compose-dev.yml new file mode 100644 index 0000000..c6a0dd1 --- /dev/null +++ b/docker/docker-compose-dev.yml @@ -0,0 +1,202 @@ +networks: + hps-proxy-network: + driver: bridge + external: false + +volumes: + auth_api_data: + acc_api_data: + lab_api_data: + dash_api_data: + audit_api_data: + +services: + keycloak_api: + image: quay.io/keycloak/keycloak:26.2.5 + container_name: keycloak + ports: + - "127.0.0.1:8080:8080" + environment: + KEYCLOAK_ADMIN: admin + KEYCLOAK_ADMIN_PASSWORD: admin + KC_DB: mariadb + KC_DB_URL_HOST: dev-keycloak.healthprosuite.com #host.docker.internal + KC_DB_URL_PORT: 3306 + KC_DB_URL_DATABASE: keycloak + KC_DB_USERNAME: keycloakdevuser + KC_DB_PASSWORD: keycloakdevuser + KC_HEALTH_ENABLED: true + KC_METRICS_ENABLED: true + KC_HTTP_ENABLED: true + KC_HOSTNAME: https://dev-keycloak.healthprosuite.com #host.docker.internal + KC_HOSTNAME_STRICT: false + KC_HOSTNAME_STRICT_HTTPS: true #Only for local dev + KC_PROXY: edge + + command: start-dev + #command: start --optimized #production mode + + rabbitmq: + image: rabbitmq:management + container_name: rabbitmq + hostname: "${RABBITMQ_HOST}" + restart: always + ports: + - "127.0.0.1:5672:5672" # RabbitMQ communication port + - "127.0.0.1:15672:15672" # RabbitMQ Management UI + environment: + RABBITMQ_DEFAULT_USER: admin + RABBITMQ_DEFAULT_PASS: securepassword + RABBITMQ_NODENAME: rabbit@localhost + RABBITMQ_PORT: 5672 + RABBITMQ_VHOST: / + networks: + - hps-proxy-network + volumes: + - ../rabbitmq_data:/var/lib/rabbitmq + + auth_api: + #container_name: auth_backend + image: healthprosuite/services:auth-backend-1.0.0 + ports: + - "127.0.0.1:5021:5021" + restart: always + env_file: .env + environment: + SPRING_PROFILES_ACTIVE: "${SPRING_PROFILES_ACTIVE}" + SPRING_DATASOURCE_URL: "${SPRING_DATASOURCE_URL_AUTH}" + SPRING_DATASOURCE_USERNAME: "${SPRING_DATASOURCE_USERNAME_AUTH}" + SPRING_DATASOURCE_PASSWORD: "${SPRING_DATASOURCE_PASSWORD_AUTH}" + SPRING_DATASOURCE_DRIVERCLASSNAME: "${SPRING_DATASOURCE_DRIVERCLASSNAME}" + AUTHSERVICE_JWT_SECRET: "${AUTHSERVICE_JWT_SECRET}" + SPRING_RABBITMQ_HOST: "${SPRING_RABBITMQ_HOST}" + SPRING_RABBITMQ_USERNAME: "${SPRING_RABBITMQ_USERNAME}" + SPRING_RABBITMQ_PASSWORD: "${SPRING_RABBITMQ_PASSWORD}" + SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KEYCLOAK_CLIENT_ID: oic-dashboard-oauth2-client-credentials + SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KEYCLOAK_CLIENT_SECRET: VrWiz6aQoyPWwzcdBoNj4CR26ZJqPS4m + AUTHSERVICE_KEYCLOAK_HOST: https://dev-keycloak.healthprosuite.com #http://host.docker.internal:8080 + volumes: + - auth_api_data:/app + - ~/development/healthprosuite/hospitals:/hospitals/logo + networks: + - hps-proxy-network + depends_on: + - rabbitmq + - keycloak_api + + acc_api: + container_name: acc_backend + image: healthprosuite/services:acc-backend-${APP_VERSION} + ports: + - "127.0.0.1:5022:5022" + restart: always + env_file: .env + environment: + SPRING_PROFILES_ACTIVE: "${SPRING_PROFILES_ACTIVE}" + SPRING_DATASOURCE_URL: "${SPRING_DATASOURCE_URL_ACC}" + SPRING_DATASOURCE_USERNAME: "${SPRING_DATASOURCE_USERNAME_ACC}" + SPRING_DATASOURCE_PASSWORD: "${SPRING_DATASOURCE_PASSWORD_ACC}" + SPRING_DATASOURCE_DRIVERCLASSNAME: "${SPRING_DATASOURCE_DRIVERCLASSNAME}" + SPRING_RABBITMQ_HOST: "${SPRING_RABBITMQ_HOST}" + SPRING_RABBITMQ_USERNAME: "${SPRING_RABBITMQ_USERNAME}" + SPRING_RABBITMQ_PASSWORD: "${SPRING_RABBITMQ_PASSWORD}" + ACCOUNTING_SERVICE_JWT_SECRET: "${AUTHSERVICE_JWT_SECRET}" + volumes: + - acc_api_data:/app + - ~/hospitals:/hospitals + networks: + - hps-proxy-network + depends_on: + - rabbitmq + - auth_api + + lab_api: + container_name: lab_backend + image: healthprosuite/services:lab-backend-${APP_VERSION} + ports: + - "127.0.0.1:5023:5023" + restart: always + env_file: .env + environment: + SPRING_PROFILES_ACTIVE: "${SPRING_PROFILES_ACTIVE}" + SPRING_DATASOURCE_URL: "${SPRING_DATASOURCE_URL_LAB}" + SPRING_DATASOURCE_USERNAME: "${SPRING_DATASOURCE_USERNAME_LAB}" + SPRING_DATASOURCE_PASSWORD: "${SPRING_DATASOURCE_PASSWORD_LAB}" + SPRING_DATASOURCE_DRIVERCLASSNAME: "${SPRING_DATASOURCE_DRIVERCLASSNAME}" + SPRING_RABBITMQ_HOST: "${SPRING_RABBITMQ_HOST}" + SPRING_RABBITMQ_USERNAME: "${SPRING_RABBITMQ_USERNAME}" + SPRING_RABBITMQ_PASSWORD: "${SPRING_RABBITMQ_PASSWORD}" + LAB_SERVICE_JWT_SECRET: "${AUTHSERVICE_JWT_SECRET}" + volumes: + - lab_api_data:/app + - ~/development/healthprosuite/laboratory:/laboratory + networks: + - hps-proxy-network + depends_on: + - rabbitmq + - auth_api + - acc_api + + audit_api: + container_name: audit_backend + image: healthprosuite/services:audit-backend-${APP_VERSION} + ports: + - "127.0.0.1:5025:5025" + restart: always + env_file: .env + environment: + SPRING_PROFILES_ACTIVE: "${SPRING_PROFILES_ACTIVE}" + SPRING_DATASOURCE_URL: "${SPRING_DATASOURCE_URL_AUDIT}" + SPRING_DATASOURCE_USERNAME: "${SPRING_DATASOURCE_USERNAME_AUDIT}" + SPRING_DATASOURCE_PASSWORD: "${SPRING_DATASOURCE_PASSWORD_AUDIT}" + SPRING_RABBITMQ_HOST: "${SPRING_RABBITMQ_HOST}" + AUDIT_SERVICE_JWT_SECRET: "${AUTHSERVICE_JWT_SECRET}" + volumes: + - audit_api_data:/app + networks: + - hps-proxy-network + depends_on: + - rabbitmq + - auth_api + - lab_api + - acc_api + + dash_api: + container_name: dash_backend + image: healthprosuite/services:dash-backend-${APP_VERSION} + #profiles: + #- skipme + ports: + - "127.0.0.1:2020:2020" + restart: always + env_file: .env + environment: + SPRING_PROFILES_ACTIVE: "${SPRING_PROFILES_ACTIVE}" + SPRING_DATASOURCE_URL: "${SPRING_DATASOURCE_URL_DASH}" + SPRING_DATASOURCE_USERNAME: "${SPRING_DATASOURCE_USERNAME_DASH}" + SPRING_DATASOURCE_PASSWORD: "${SPRING_DATASOURCE_PASSWORD_DASH}" + SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KEYCLOAK_CLIENT_ID: oic-dashboard-oauth2-client-credentials + SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KEYCLOAK_CLIENT_SECRET: VrWiz6aQoyPWwzcdBoNj4CR26ZJqPS4m + SPRING_SECURITY_OAUTH2_RESOURCE_SERVER_JWT_JWT_SET_URI: https://dev-keycloak.healthprosuite.com + SPRING_KEYCLOAK_HOST: https://dev-keycloak.healthprosuite.com #http://127.0.0.1:8080 #http://host.docker.internal:8080 + APPLICATION_WEB_CLIENT_HOST: https://dev-auth-service.healthprosuite.com/auth/v1 #http://host.docker.internal:5021/auth/v1 + APPLICATION_KEYCLOAK_SERVER_URL: https://dev-keycloak.healthprosuite.com #http://127.0.0.1:8080 #http://host.docker.internal:8080 + APPLICATION_KEYCLOAK_REALM: Dashboard-HPS-Realm + volumes: + - dash_api_data:/app + networks: + - hps-proxy-network + depends_on: + - auth_api + - acc_api + - keycloak_api + + icd-api: + container_name: icd-api + image: whoicd/icd-api + ports: + - "0.0.0.0:8000:80" + environment: + - acceptLicense=true # Required parameter to agree with license + - saveAnalytics=${SAVE_ANALYTICS:-true} # Optional: set to true to send analytics to WHO + - include=${INCLUDE:-2024-01_en} # Optional: set the language or release version (e.g., 2024-01_en, 2024-01_es for Spanish) \ No newline at end of file From fef7aaa1be609fe736a453d85598c3e2c3d22f62 Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Nov 2025 19:25:35 +0100 Subject: [PATCH 2/7] update script --- .gitea/workflows/checks-and-policy.yml | 72 ---------------------- .gitea/workflows/scripts/deploy-backend.sh | 11 ++++ 2 files changed, 11 insertions(+), 72 deletions(-) diff --git a/.gitea/workflows/checks-and-policy.yml b/.gitea/workflows/checks-and-policy.yml index ee6c400..3270b85 100644 --- a/.gitea/workflows/checks-and-policy.yml +++ b/.gitea/workflows/checks-and-policy.yml @@ -135,75 +135,3 @@ jobs: scp -o StrictHostKeyChecking=no -r frontend/.next root@$SERVER_IP:$WEB_ROOT/ echo "Frontend .next build successfully deployed to $SERVER_IP:$WEB_ROOT/.next" - - backend-jobs: - name: Set up Java for Backend Tests and Build - if: ${{ github.ref == 'refs/heads/main' }} # skip - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Java 21 + Maven - run: | - echo "Detecting package manager..." - if command -v apt-get >/dev/null 2>&1; then - PM=apt - elif command -v apk >/dev/null 2>&1; then - PM=apk - elif command -v yum >/dev/null 2>&1; then - PM=yum - else - echo "No known package manager found. Will install JDK manually." - PM=none - fi - - echo "Package manager detected: $PM" - - if [ "$PM" = "apt" ]; then - apt-get update -y - apt-get install -y openjdk-21-jdk maven wget tar - JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 - elif [ "$PM" = "apk" ]; then - apk update - apk add openjdk21 maven wget tar - JAVA_HOME=/usr/lib/jvm/java-21-openjdk - elif [ "$PM" = "yum" ]; then - yum install -y java-21-openjdk-devel maven wget tar - JAVA_HOME=/usr/lib/jvm/java-21-openjdk - else - # Fallback: manual download - JDK_URL="https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz" - mkdir -p /opt/jdk - wget -q -O /tmp/jdk.tar.gz $JDK_URL - tar -xzf /tmp/jdk.tar.gz -C /opt/jdk --strip-components=1 - JAVA_HOME=/opt/jdk - fi - - # Export JAVA_HOME and update PATH for subsequent steps - echo "JAVA_HOME=$JAVA_HOME" >> $GITEA_ENV - echo "$JAVA_HOME/bin" >> $GITEA_PATH - export JAVA_HOME=$JAVA_HOME - export PATH=$JAVA_HOME/bin:$PATH - - # Verify Java and Maven installation - java -version - mvn -version - - - name: Verify Java setup - run: | - java -version - - - name: Verify Java setup - run: | - ls -l $JAVA_HOME/bin/java - file $JAVA_HOME/bin/java || true - java -version - - # Run backend tests and build - - name: Test & build backend - working-directory: . - run: | - mvn clean test -Dspring.profiles.active=test - echo "Backend test and build workflow successfully completed." \ No newline at end of file diff --git a/.gitea/workflows/scripts/deploy-backend.sh b/.gitea/workflows/scripts/deploy-backend.sh index e69de29..1708f13 100644 --- a/.gitea/workflows/scripts/deploy-backend.sh +++ b/.gitea/workflows/scripts/deploy-backend.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +set -e # Exit immediately if a command exits with a non-zero status + +docker compose -f docker-compose-dev.yml down --remove-orphans --volumes + +docker system prune -f + +docker compose -f docker-compose-dev.yml up -d + +echo "Started all containers successfully" \ No newline at end of file From fe1b906416898aea3384063be873fd93f92d3e44 Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Nov 2025 19:33:40 +0100 Subject: [PATCH 3/7] ls script --- .gitea/workflows/be-img-build-and-push.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/be-img-build-and-push.yaml b/.gitea/workflows/be-img-build-and-push.yaml index e32bb29..f2d61c7 100644 --- a/.gitea/workflows/be-img-build-and-push.yaml +++ b/.gitea/workflows/be-img-build-and-push.yaml @@ -89,6 +89,7 @@ jobs: - name: Deploy to server via deploy script run: | + ls -a chmod +x ./scripts/deploy-backend.sh #./scripts/deploy-backend.sh ${{ gitea.actor }} ${{ vars.REGISTRY_URL }} my-app-backend v1.0.0 ./scripts/deploy-backend.sh From 751413a90aaf95c6a24b352c653e7f65df2c163e Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Nov 2025 19:43:28 +0100 Subject: [PATCH 4/7] ls script --- .gitea/workflows/be-img-build-and-push.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/be-img-build-and-push.yaml b/.gitea/workflows/be-img-build-and-push.yaml index f2d61c7..9ccab98 100644 --- a/.gitea/workflows/be-img-build-and-push.yaml +++ b/.gitea/workflows/be-img-build-and-push.yaml @@ -89,7 +89,8 @@ jobs: - name: Deploy to server via deploy script run: | - ls -a - chmod +x ./scripts/deploy-backend.sh + ls .gitea + ls .gitea/scripts/ + chmod +x .gitea/scripts/deploy-backend.sh #./scripts/deploy-backend.sh ${{ gitea.actor }} ${{ vars.REGISTRY_URL }} my-app-backend v1.0.0 - ./scripts/deploy-backend.sh + .gitea/scripts/deploy-backend.sh From 0272db8933622d846d123b09a895b3aedbe899be Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Nov 2025 19:47:45 +0100 Subject: [PATCH 5/7] ls script --- .gitea/workflows/be-img-build-and-push.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/be-img-build-and-push.yaml b/.gitea/workflows/be-img-build-and-push.yaml index 9ccab98..2e27733 100644 --- a/.gitea/workflows/be-img-build-and-push.yaml +++ b/.gitea/workflows/be-img-build-and-push.yaml @@ -89,8 +89,9 @@ jobs: - name: Deploy to server via deploy script run: | - ls .gitea - ls .gitea/scripts/ - chmod +x .gitea/scripts/deploy-backend.sh + ls + ls ./.gitea + ls ./.gitea/scripts/ + chmod +x ./.gitea/scripts/deploy-backend.sh #./scripts/deploy-backend.sh ${{ gitea.actor }} ${{ vars.REGISTRY_URL }} my-app-backend v1.0.0 - .gitea/scripts/deploy-backend.sh + ./.gitea/scripts/deploy-backend.sh From fa4e2d15f90d79c928659fff08f47eededf5ea61 Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Nov 2025 19:58:53 +0100 Subject: [PATCH 6/7] ls script --- .gitea/workflows/be-img-build-and-push.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/be-img-build-and-push.yaml b/.gitea/workflows/be-img-build-and-push.yaml index 2e27733..96a83c1 100644 --- a/.gitea/workflows/be-img-build-and-push.yaml +++ b/.gitea/workflows/be-img-build-and-push.yaml @@ -89,9 +89,8 @@ jobs: - name: Deploy to server via deploy script run: | - ls - ls ./.gitea - ls ./.gitea/scripts/ - chmod +x ./.gitea/scripts/deploy-backend.sh - #./scripts/deploy-backend.sh ${{ gitea.actor }} ${{ vars.REGISTRY_URL }} my-app-backend v1.0.0 - ./.gitea/scripts/deploy-backend.sh + ls -a + ls .gitea/scripts/ + chmod +x .gitea/scripts/deploy-backend.sh + #.gitea/scripts/deploy-backend.sh ${{ gitea.actor }} ${{ vars.REGISTRY_URL }} my-app-backend v1.0.0 + .gitea/scripts/deploy-backend.sh From 7ddeaf9816ffa7049e3e0707dce72b5392dfb7dd Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Nov 2025 20:07:59 +0100 Subject: [PATCH 7/7] ls script --- .gitea/workflows/be-img-build-and-push.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitea/workflows/be-img-build-and-push.yaml b/.gitea/workflows/be-img-build-and-push.yaml index 96a83c1..133953e 100644 --- a/.gitea/workflows/be-img-build-and-push.yaml +++ b/.gitea/workflows/be-img-build-and-push.yaml @@ -87,6 +87,12 @@ jobs: docker images echo "Cleanup done." + - name: Prepare deploy script + run: | + mkdir -p .gitea/scripts + echo "echo Deploying..." > .gitea/scripts/deploy-backend.sh + chmod +x .gitea/scripts/deploy-backend.sh + - name: Deploy to server via deploy script run: | ls -a