From b8ea1a2667a74d8e06a58f41a3de63f977ef6057 Mon Sep 17 00:00:00 2001 From: Taiwu Date: Sat, 8 Mar 2025 16:17:15 -0700 Subject: [PATCH 01/11] Update BDD_video.mp4 --- docs/BDD_video.mp4 | Bin 12191007 -> 12191004 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/BDD_video.mp4 b/docs/BDD_video.mp4 index 27c4646cf01956f75756fca4569d3aedbc1417d6..571239ede95cfe30e98aab42f099e7dc7eba9064 100644 GIT binary patch delta 665 zcmWN=*;$oTM0_k9wjMRd$n&N#bVm6W(xQ701wha zD-ZE7Q+b4GOlJl&d6dVP#cbyAI8X2-b9st+Jk2va%X2)>d|qGyFY*!#S;S(Nu#{yi z=Ve}D1+TKwu$ooQ5WCw|Ww>3{|GeyurD|T|b=L3(Ygxy7-sCOb<{dWhF7L6C_u0f| zK41%5`H+wJm`~Wor?l}I+xeVg2Vc<6m+WL0yV=8D_VE?_`I>L|mhbqU1N^{24snGpG55U-^yS`GY?>!(W`GgTFb)Kb+?Rom`~BzlLMUY=~b5bj@Sp delta 671 zcmWO1*)|ja0Eh827)vOHqD7I&(qgGbo61fhlvF~9HcM2tGV*7bN~J7ig!UMfqG_&r z2Y2%Z-OM}mUHs1ZZaLbXww z6sB-())sBmHbrQ=b|_L&+No&mQjB7?TXBk4f)ceyd$mvdm84{)ET@{BhCqwSnTi8A zh(ji!EK`F{`4(Cyh3#hf5QbsJV?4oAjNlob;{`_X60b0ZaZF$m zuki*`uwfc+F@ssm;T_)N13uytKI03%Vjc^yV-er*9Y3&ypZJAktl&2s_~Wp Date: Thu, 13 Mar 2025 13:59:44 -0600 Subject: [PATCH 02/11] dockerfile to create image --- DockerFile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 DockerFile diff --git a/DockerFile b/DockerFile new file mode 100644 index 00000000..54062708 --- /dev/null +++ b/DockerFile @@ -0,0 +1,14 @@ +#1 Building the application +FROM gradle:7.6-jdk8 as builder +WORKDIR /home/gradle/project +COPY . . +RUN gradle clean build --no-daemon + +#2 Updated the docker file to package the application +FROM openjdk:8-jre-alpine +WORKDIR /app + +#3 Adjusting path to our built jar +COPY --from=builder /home/gradle/project/build/libs/*.jar app.jar +EXPOSE 8080 +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file From 36422e8f6d85aeef77b0115e92c4662a9fdf5501 Mon Sep 17 00:00:00 2001 From: SoftwareRafay Date: Thu, 13 Mar 2025 15:36:32 -0600 Subject: [PATCH 03/11] fixed versions so it runs now --- build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- desktop_app/gradle/wrapper/gradle.bat | 92 +++++++++++++++++++ gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 desktop_app/gradle/wrapper/gradle.bat diff --git a/build.gradle b/build.gradle index ff7b120e..b99ae1c4 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ plugins { // gretty is a gradle plugin to make it easy to run a server and hotswap code at runtime. // https://plugins.gradle.org/plugin/org.gretty - id 'org.gretty' version '3.0.4' + id 'org.gretty' version '3.0.6' // provides access to a database versioning tool. id "org.flywaydb.flyway" version "6.0.8" @@ -63,7 +63,7 @@ plugins { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(11)) + languageVersion.set(JavaLanguageVersion.of(17)) } } diff --git a/desktop_app/gradle/wrapper/gradle-wrapper.properties b/desktop_app/gradle/wrapper/gradle-wrapper.properties index f371643e..068cdb2d 100644 --- a/desktop_app/gradle/wrapper/gradle-wrapper.properties +++ b/desktop_app/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/desktop_app/gradle/wrapper/gradle.bat b/desktop_app/gradle/wrapper/gradle.bat new file mode 100644 index 00000000..da9c7040 --- /dev/null +++ b/desktop_app/gradle/wrapper/gradle.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME%.. + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\lib\gradle-launcher-7.6.4.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f371643e..2e6e5897 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From e2926c51f4d70890e238836d643b4f2c76316edb Mon Sep 17 00:00:00 2001 From: AzmathKhan Date: Thu, 13 Mar 2025 16:06:48 -0600 Subject: [PATCH 04/11] First half of dockerfile completed --- DockerFile | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/DockerFile b/DockerFile index 54062708..c2c70931 100644 --- a/DockerFile +++ b/DockerFile @@ -1,14 +1,12 @@ -#1 Building the application -FROM gradle:7.6-jdk8 as builder -WORKDIR /home/gradle/project -COPY . . -RUN gradle clean build --no-daemon - -#2 Updated the docker file to package the application -FROM openjdk:8-jre-alpine -WORKDIR /app - -#3 Adjusting path to our built jar -COPY --from=builder /home/gradle/project/build/libs/*.jar app.jar -EXPOSE 8080 -ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file + +# Base Image +FROM gradle:7.3.3-jdk11 as build + +# Working directory +WORKDIR /desktop_app + +#Install Application dependencies +COPY build.gradle ./ +COPY gradlew gradlew.bat ./ +COPY gradle ./gradle + From 94f67ac8f5ed0d657236b2f3419f73244dbef9f6 Mon Sep 17 00:00:00 2001 From: AzmathKhan Date: Thu, 13 Mar 2025 16:07:52 -0600 Subject: [PATCH 05/11] Docker file completed --- DockerFile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/DockerFile b/DockerFile index c2c70931..a5f16e87 100644 --- a/DockerFile +++ b/DockerFile @@ -10,3 +10,15 @@ COPY build.gradle ./ COPY gradlew gradlew.bat ./ COPY gradle ./gradle +#Copy all files in the project into the container image +COPY . . + +RUN chmod +x ./gradlew + +RUN ./gradlew build + +#Expose port +EXPOSE 8080 + +#Specify default command run using CMD instruction +CMD ["./gradlew", "appRun"] \ No newline at end of file From fea45251a227091f0661b93a5c4956cac1143e0d Mon Sep 17 00:00:00 2001 From: Taiwu Date: Fri, 14 Mar 2025 15:57:33 -0600 Subject: [PATCH 06/11] Update DockerFile assemble works for me to build the image --- DockerFile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DockerFile b/DockerFile index a5f16e87..608292a7 100644 --- a/DockerFile +++ b/DockerFile @@ -1,6 +1,6 @@ # Base Image -FROM gradle:7.3.3-jdk11 as build +FROM gradle:7.3.3-jdk11 AS build # Working directory WORKDIR /desktop_app @@ -15,7 +15,7 @@ COPY . . RUN chmod +x ./gradlew -RUN ./gradlew build +RUN ./gradlew assemble #Expose port EXPOSE 8080 From 4c9689da16c7e764bd6ca4740bf6f01404b7293d Mon Sep 17 00:00:00 2001 From: Taiwu Date: Fri, 14 Mar 2025 16:04:13 -0600 Subject: [PATCH 07/11] docker-compose up -d --- docker-compose.yaml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docker-compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..ea9aa718 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,35 @@ +version: '3.8' + +services: + demo-app: + build: + context: . + dockerfile: DockerFile + ports: + - "8080:8080" + volumes: + - ./build/db:/desktop_app/build/db + environment: + - JAVA_OPTS=-Xmx1g -XX:MaxMetaspaceSize=1024m + + sonarqube: + image: sonarqube:latest + ports: + - "9000:9000" + environment: + - SONARQUBE_JDBC_URL=jdbc:h2:mem:sonarqube + volumes: + - sonarqube_data:/opt/sonarqube/data + - sonarqube_extensions:/opt/sonarqube/extensions + - sonarqube_logs:/opt/sonarqube/logs + networks: + - demo-network + +networks: + demo-network: + driver: bridge + +volumes: + sonarqube_data: + sonarqube_extensions: + sonarqube_logs: \ No newline at end of file From 78b85285110132e5d1acd87e27b44b5f474a8723 Mon Sep 17 00:00:00 2001 From: Younnus Iman <144744474+YounnIm@users.noreply.github.com> Date: Sat, 15 Mar 2025 22:12:06 +0000 Subject: [PATCH 08/11] Added details to dockerfile to reduce image size --- DockerFile | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/DockerFile b/DockerFile index 608292a7..18b6e88a 100644 --- a/DockerFile +++ b/DockerFile @@ -1,6 +1,6 @@ # Base Image -FROM gradle:7.3.3-jdk11 AS build +FROM gradle:7.3.3-jdk11 AS builder # Working directory WORKDIR /desktop_app @@ -10,15 +10,30 @@ COPY build.gradle ./ COPY gradlew gradlew.bat ./ COPY gradle ./gradle -#Copy all files in the project into the container image -COPY . . +# Install dependencies (cache this layer) +RUN ./gradlew dependencies --no-daemon -RUN chmod +x ./gradlew +# Copy source code +COPY src ./src -RUN ./gradlew assemble +# Build application +RUN ./gradlew assemble --no-daemon -#Expose port +# Runtime stage - JRE only +FROM eclipse-temurin:11-jre-jammy + +WORKDIR /app + +# Create non-root user +RUN groupadd -r appgroup && \ + useradd -r -g appgroup -d /app -s /bin/false appuser && \ + chown -R appuser:appgroup /app + +# Copy built artifact from builder +COPY --from=builder --chown=appuser:appgroup /app/build/libs/*.jar app.jar + +# Runtime config +USER appuser EXPOSE 8080 -#Specify default command run using CMD instruction -CMD ["./gradlew", "appRun"] \ No newline at end of file +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file From 67173dd49cc6586452e746152cdff771057e4d00 Mon Sep 17 00:00:00 2001 From: Younnus Iman <144744474+YounnIm@users.noreply.github.com> Date: Sat, 15 Mar 2025 22:12:58 +0000 Subject: [PATCH 09/11] changed comment for docker addition --- DockerFile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DockerFile b/DockerFile index 18b6e88a..33112af9 100644 --- a/DockerFile +++ b/DockerFile @@ -24,7 +24,7 @@ FROM eclipse-temurin:11-jre-jammy WORKDIR /app -# Create non-root user +# Create non-root user (increased security) RUN groupadd -r appgroup && \ useradd -r -g appgroup -d /app -s /bin/false appuser && \ chown -R appuser:appgroup /app From 9257933dfcabe04a6fd0fea0c13ca32cc9ff48f1 Mon Sep 17 00:00:00 2001 From: Younnus Iman <144744474+YounnIm@users.noreply.github.com> Date: Sat, 15 Mar 2025 23:34:54 +0000 Subject: [PATCH 10/11] Should be able to run consistently now --- DockerFile | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/DockerFile b/DockerFile index 33112af9..72e20294 100644 --- a/DockerFile +++ b/DockerFile @@ -1,27 +1,23 @@ - # Base Image FROM gradle:7.3.3-jdk11 AS builder # Working directory WORKDIR /desktop_app -#Install Application dependencies -COPY build.gradle ./ -COPY gradlew gradlew.bat ./ -COPY gradle ./gradle - -# Install dependencies (cache this layer) -RUN ./gradlew dependencies --no-daemon +# Copy all project files +COPY . . -# Copy source code -COPY src ./src +# Make gradlew executable +RUN chmod +x ./gradlew # Build application RUN ./gradlew assemble --no-daemon +# Check where the JAR file actually is +RUN find /desktop_app -name "*.jar" | grep -v "/gradle/" > jar_location.txt + # Runtime stage - JRE only FROM eclipse-temurin:11-jre-jammy - WORKDIR /app # Create non-root user (increased security) @@ -29,11 +25,21 @@ RUN groupadd -r appgroup && \ useradd -r -g appgroup -d /app -s /bin/false appuser && \ chown -R appuser:appgroup /app -# Copy built artifact from builder -COPY --from=builder --chown=appuser:appgroup /app/build/libs/*.jar app.jar +# Copy the file with JAR location +COPY --from=builder /desktop_app/jar_location.txt /app/ + +COPY --from=builder /desktop_app/build/ /app/build/ + +# Use the first JAR found in the build directory (temp solution) +RUN find /app/build -name "*.jar" | grep -v "/gradle/" | head -1 > jar_path.txt && \ + if [ -s jar_path.txt ]; then \ + cp $(cat jar_path.txt) /app/app.jar && \ + chown appuser:appgroup /app/app.jar; \ + else \ + echo "No JAR files found!" && exit 1; \ + fi # Runtime config USER appuser EXPOSE 8080 - -ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file +ENTRYPOINT ["java", "-jar", "/app/app.jar"] \ No newline at end of file From 4df10c799a4d57d06a00af59d216380d93874d2a Mon Sep 17 00:00:00 2001 From: Taiwu Date: Sat, 15 Mar 2025 23:48:47 -0600 Subject: [PATCH 11/11] update org.gretty version to 3.1.5 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b99ae1c4..f62197ea 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ plugins { // gretty is a gradle plugin to make it easy to run a server and hotswap code at runtime. // https://plugins.gradle.org/plugin/org.gretty - id 'org.gretty' version '3.0.6' + id 'org.gretty' version '3.1.5' // provides access to a database versioning tool. id "org.flywaydb.flyway" version "6.0.8"