Skip to content

Commit 715ddd7

Browse files
committed
ci pipeline
1 parent 4141006 commit 715ddd7

2 files changed

Lines changed: 69 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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 .

Dockerfile

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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"]

0 commit comments

Comments
 (0)