diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..1e7a441 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,22 @@ +name: spring-api-ci + +on: + push: + branches: ["**"] + pull_request: + +jobs: + build-test: + runs-on: ubuntu + steps: + - uses: actions/checkout@v4 + + - name: Setup Java 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21" + cache: maven + + - name: Build & test + run: mvn -B -ntp clean verify diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 9b1fd28..7c2f75c 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -55,5 +55,17 @@ $ProjectFileDir$ + + postgresql + true + org.postgresql.Driver + jdbc:postgresql://ash.gofwd.group:5433/postgres + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/docker/backend/Dockerfile b/docker/backend/Dockerfile index 38beb6c..42ebf9b 100644 --- a/docker/backend/Dockerfile +++ b/docker/backend/Dockerfile @@ -1,6 +1,6 @@ # Stage 1: Build the application (The Build Stage) # Use a Java SDK image with Maven pre-installed -FROM maven:3.9-jdk-17-slim AS build +FROM maven:3.9.6-eclipse-temurin-21 AS build # Set the working directory inside the container WORKDIR /app @@ -17,8 +17,9 @@ RUN mvn clean package -DskipTests # Stage 2: Create the final lightweight image (The Runtime Stage) # Use a smaller Java Runtime Environment (JRE) image for a smaller footprint -FROM openjdk:17-jre-slim +FROM eclipse-temurin:21-jre +ENV SPRING_PROFILES_ACTIVE=prod # Set the working directory in the final image WORKDIR /app diff --git a/docker/compose.yaml b/docker/compose.yaml deleted file mode 100644 index 88efb6d..0000000 --- a/docker/compose.yaml +++ /dev/null @@ -1,9 +0,0 @@ -services: - postgres: - image: 'postgres:latest' - environment: - - 'POSTGRES_DB=mydatabase' - - 'POSTGRES_PASSWORD=secret' - - 'POSTGRES_USER=myuser' - ports: - - '5432' diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index be4fa49..073fbb1 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -1,28 +1,26 @@ -version: '3.8' - services: # --- 1. Spring API Service (Backend) --- - ss_builder-api: - build: - context: ./backend # Path to your Spring project's root folder - dockerfile: Dockerfile # Assumes you have a Dockerfile in ./backend - container_name: ss_builder-api + battlbuilder_api: + container_name: battlbuilder_api + hostname: battlbuilder_api + image: gitea.gofwd.group/forward_group/ballistic-builder-spring/spring-api:latest ports: - "8080:8080" # Map host port 8080 to container port 8080 environment: # These environment variables link the API to the database service defined below - - SPRING_DATASOURCE_URL=jdbc:postgresql://r710.dev.gofwd.group:5433/ss_builder + - SPRING_DATASOURCE_URL=jdbc:postgresql://ash.gofwd.group:5433/ss_builder - SPRING_DATASOURCE_USERNAME=dba - SPRING_DATASOURCE_PASSWORD=!@#Qwerty + - SPRING_PROFILES_ACTIVE=prod + - AI_ENRICHMENT_PROVIDER=off networks: - app-network # --- 2. Next.js App Service (Frontend) --- - nextjs-app: - build: - context: ./frontend # Path to your Next.js project's root folder - dockerfile: Dockerfile # Assumes you have a Dockerfile in ./frontend - container_name: ss_builder-app + bb_web_app: + hostname: bb_web_app + container_name: bb_web_app + image: gitea.gofwd.group/sean/shadow-gunbuilder-ai-proto/webui:latest ports: - "3000:3000" # Map host port 3000 to container port 3000 environment: @@ -32,7 +30,7 @@ services: # For local testing, you might need the host IP for Next.js to call back # - NEXT_PUBLIC_API_URL_LOCAL=http://localhost:8080 depends_on: - - ss_builder-api + - battlbuilder_api networks: - app-network diff --git a/push-image.sh b/push-image.sh new file mode 100755 index 0000000..b2439fc --- /dev/null +++ b/push-image.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -e + +REGISTRY="gitea.gofwd.group" +OWNER="forward_group/ballistic-builder-spring" +IMAGE="spring-api" + +TAG=$(git rev-parse --short HEAD) + +FULL_IMAGE="$REGISTRY/$OWNER/$IMAGE" + +echo "Building $FULL_IMAGE:$TAG" +docker build -f docker/backend/Dockerfile -t $FULL_IMAGE:$TAG . + +echo "Tagging latest" +docker tag $FULL_IMAGE:$TAG $FULL_IMAGE:latest + +echo "Pushing $TAG" +docker push $FULL_IMAGE:$TAG + +echo "Pushing latest" +docker push $FULL_IMAGE:latest + +echo "Done!" diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a22737b..2c1e8cb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,8 +1,8 @@ spring.application.name=BattlBuilderAPI # Database connection properties -spring.datasource.url=jdbc:postgresql://r710.gofwd.group:5433/ss_builder -spring.datasource.username=postgres -spring.datasource.password=cul8rman +spring.datasource.url=jdbc:postgresql://ash.gofwd.group:5433/ss_builder +spring.datasource.username=dba +spring.datasource.password=!@#Qwerty spring.datasource.driver-class-name=org.postgresql.Driver @@ -77,8 +77,8 @@ app.beta.invite.tokenMinutes=30 # Ai Enrichment Settings ai.minConfidence=0.75 -ai.openai.apiKey=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 +ai.openai.apiKey=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 ai.openai.model=gpt-4.1-mini - +ai.enrichment.provider=off spring.jackson.serialization.fail-on-empty-beans=false \ No newline at end of file