File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ name : Hexagonal CI Pipeline (Java 25)
2+
3+ on :
4+ push :
5+ branches : [ main ]
6+ pull_request :
7+ branches : [ main ]
8+
9+ jobs :
10+ build-and-test :
11+ runs-on : ubuntu-latest
12+
13+
14+ services :
15+ mysql :
16+ image : mysql:9.5
17+ env :
18+ MYSQL_ROOT_PASSWORD : root
19+ MYSQL_DATABASE : HexagonalProductions
20+ ports :
21+ - 3306:3306
22+ options : --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
23+
24+ steps :
25+ - name : Checkout code
26+ uses : actions/checkout@v4
27+
28+ - name : Setup JDK 25
29+ uses : actions/setup-java@v4
30+ with :
31+ java-version : ' 25'
32+ distribution : ' temurin'
33+ cache : maven
34+
35+
36+
37+ - name : Build and Verify
38+ run : mvn clean verify
39+ env :
40+ SPRING_DATASOURCE_URL : jdbc:mysql://localhost:3306/HexagonalProductions
41+ SPRING_DATASOURCE_USERNAME : root
42+ SPRING_DATASOURCE_PASSWORD : root
43+
44+ - name : Build Docker Image
45+ run : docker build -t hexagonal-app:latest .
Original file line number Diff line number Diff line change 1+ # Build stage
2+ FROM eclipse-temurin:25-jdk-jammy AS build
3+ WORKDIR /app
4+
5+ COPY .mvn/ .mvn
6+ COPY mvnw pom.xml ./
7+ RUN chmod +x mvnw
8+
9+ # Cache dependencies
10+ RUN ./mvnw dependency:go-offline -B
11+
12+ # Copy source separately (better caching)
13+ COPY src ./src
14+
15+ RUN ./mvnw clean package -DskipTests
16+
17+ # Runtime stage
18+ FROM eclipse-temurin:25-jre-jammy
19+ WORKDIR /app
20+
21+ COPY --from=build /app/target/*.jar app.jar
22+
23+ EXPOSE 8080
24+ ENTRYPOINT ["java" , "-jar" , "app.jar" ]
You can’t perform that action at this time.
0 commit comments