ci: implements jenkins deploy
This commit is contained in:
48
Dockerfile
48
Dockerfile
@@ -1,16 +1,40 @@
|
|||||||
# Stage 1: Build
|
# --- Stage 1: Dependencias ---
|
||||||
FROM maven:3.9-eclipse-temurin-21-alpine AS build
|
FROM maven:3.9-eclipse-temurin-21-alpine AS deps
|
||||||
|
WORKDIR /app
|
||||||
|
# Copiamos solo el pom.xml para descargar librerías (esta capa se cachea)
|
||||||
|
COPY pom.xml .
|
||||||
|
COPY application/pom.xml ./application
|
||||||
|
COPY bootstrap/pom.xml ./bootstrap
|
||||||
|
COPY domain/pom.xml ./domain
|
||||||
|
COPY infrastructure/pom.xml ./infrastructure
|
||||||
|
RUN mvn dependency:go-offline
|
||||||
|
|
||||||
|
# --- Stage 2: Build ---
|
||||||
|
FROM deps AS build
|
||||||
|
COPY application/src ./application/src
|
||||||
|
COPY bootstrap/src ./bootstrap/src
|
||||||
|
COPY domain/src ./domain/src
|
||||||
|
COPY infrastructure/src ./infrastructure/src
|
||||||
|
# Al haber descargado las deps antes, esto es mucho más rápido
|
||||||
|
RUN mvn clean package -DskipTests -Dmaven.main.skip=false
|
||||||
|
|
||||||
|
# --- Stage 3: Run (Imagen final ultra-ligera) ---
|
||||||
|
FROM eclipse-temurin:21-jre-alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copiamos todo el proyecto
|
# Crear un usuario sin privilegios por seguridad y para ahorrar recursos
|
||||||
COPY . .
|
RUN addgroup -S spring && adduser -S spring -G spring
|
||||||
|
USER spring:spring
|
||||||
|
|
||||||
# Compilamos todo el proyecto (todos los módulos)
|
|
||||||
RUN mvn clean package -DskipTests
|
|
||||||
|
|
||||||
# Stage 2: Run
|
|
||||||
FROM openjdk:21-jdk
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=build /app/bootstrap/target/*.jar app.jar
|
COPY --from=build /app/bootstrap/target/*.jar app.jar
|
||||||
EXPOSE 80
|
|
||||||
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-Xmx512m", "-Xms256m", "-jar", "app.jar"]
|
# Optimización de flags para APIs pequeñas:
|
||||||
|
# 1. SerialGC consume menos memoria que G1GC en montones pequeños (< 1GB)
|
||||||
|
# 2. TieredCompilation ayuda a arrancar más rápido con menos CPU
|
||||||
|
ENTRYPOINT ["java", \
|
||||||
|
"-XX:+UseContainerSupport", \
|
||||||
|
"-XX:MaxRAMPercentage=70.0", \
|
||||||
|
"-XX:+UseSerialGC", \
|
||||||
|
"-XX:TieredStopAtLevel=1", \
|
||||||
|
"-Xms64m", \
|
||||||
|
"-jar", "app.jar"]
|
||||||
3
Jenkinsfile
vendored
3
Jenkinsfile
vendored
@@ -70,5 +70,8 @@ pipeline {
|
|||||||
failure {
|
failure {
|
||||||
echo "❌ Pipeline failed!"
|
echo "❌ Pipeline failed!"
|
||||||
}
|
}
|
||||||
|
always {
|
||||||
|
deleteDir()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
6
Makefile
6
Makefile
@@ -1,3 +1,4 @@
|
|||||||
|
STACK=pablotj-portfolio
|
||||||
APP_NAME=pablotj-portfolio-api
|
APP_NAME=pablotj-portfolio-api
|
||||||
IMAGE_NAME=$(APP_NAME)
|
IMAGE_NAME=$(APP_NAME)
|
||||||
|
|
||||||
@@ -6,7 +7,7 @@ NAMESPACE=andromeda
|
|||||||
TAG?=latest
|
TAG?=latest
|
||||||
|
|
||||||
HOST_PORT=8181
|
HOST_PORT=8181
|
||||||
CONTAINER_PORT=80
|
CONTAINER_PORT=8080
|
||||||
|
|
||||||
IMAGE_FULL=$(REGISTRY_URL)/$(NAMESPACE)/$(IMAGE_NAME):$(TAG)
|
IMAGE_FULL=$(REGISTRY_URL)/$(NAMESPACE)/$(IMAGE_NAME):$(TAG)
|
||||||
|
|
||||||
@@ -22,6 +23,9 @@ push:
|
|||||||
run:
|
run:
|
||||||
docker run -d \
|
docker run -d \
|
||||||
--name $(APP_NAME) \
|
--name $(APP_NAME) \
|
||||||
|
--label com.docker.compose.service="$(APP_NAME)" \
|
||||||
|
--label com.docker.compose.project="$(STACK)" \
|
||||||
|
--network andromeda \
|
||||||
-p $(HOST_PORT):$(CONTAINER_PORT) \
|
-p $(HOST_PORT):$(CONTAINER_PORT) \
|
||||||
--env-file .env \
|
--env-file .env \
|
||||||
$(IMAGE_FULL)
|
$(IMAGE_FULL)
|
||||||
|
|||||||
@@ -124,11 +124,6 @@ alter table if exists experience_skill
|
|||||||
foreign key (experience_id)
|
foreign key (experience_id)
|
||||||
references experience;
|
references experience;
|
||||||
|
|
||||||
alter table if exists profile_social_link
|
|
||||||
add constraint FKfh1pbfvvg3palcr1yip6jffik
|
|
||||||
foreign key (PROFILE_ID)
|
|
||||||
references profile;
|
|
||||||
|
|
||||||
alter table if exists project_feature
|
alter table if exists project_feature
|
||||||
add constraint FKdifppyvrfito5in15ox4db0up
|
add constraint FKdifppyvrfito5in15ox4db0up
|
||||||
foreign key (project_id)
|
foreign key (project_id)
|
||||||
|
|||||||
Reference in New Issue
Block a user