diff --git a/Dockerfile b/Dockerfile index 09a8565..b6c7e88 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,5 +12,5 @@ RUN mvn clean package -DskipTests FROM openjdk:21-jdk WORKDIR /app COPY --from=build /app/bootstrap/target/*.jar app.jar -EXPOSE 8080 +EXPOSE 80 ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-Xmx512m", "-Xms256m", "-jar", "app.jar"] \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..b753785 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,74 @@ +pipeline { + agent any + + environment { + REGISTRY_URL = "registry.pablotj.com" + USER = "andromeda" + PASS = credentials('docker-registry-password') + } + + stages { + stage('Prepare Workspace & Checkout') { + steps { + echo "Cleaning workspace" + deleteDir() + } + } + + + stage('Checkout') { + steps { + echo "Checking out repo..." + checkout scm + } + } + + stage('Load Environment') { + steps { + echo "Loading .env secret from Jenkins..." + withCredentials([file(credentialsId: 'env', variable: 'SECRET_ENV')]) { + sh 'cp $SECRET_ENV .env' + } + } + } + + stage('Build and Tag Docker Image') { + steps { + echo "Building Docker image..." + sh ''' + make build + make tag + ''' + } + } + + stage('ush Docker Image') { + steps { + echo "Tagging and pushing Docker image to registry..." + sh ''' + echo $PASS | docker login ${REGISTRY_URL} -u ${USER} --password-stdin + make push + ''' + } + } + + stage('Deploy Docker Container') { + steps { + echo "Stopping old container and running new container..." + sh ''' + make stop + make run + ''' + } + } + } + + post { + success { + echo "✅ Deployment completed successfully!" + } + failure { + echo "❌ Pipeline failed!" + } + } +} \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..26a9cc4 --- /dev/null +++ b/Makefile @@ -0,0 +1,33 @@ +APP_NAME=pablotj-portfolio-api +IMAGE_NAME=$(APP_NAME) + +REGISTRY_URL=registry.pablotj.com +NAMESPACE=andromeda +TAG?=latest + +HOST_PORT=8181 +CONTAINER_PORT=80 + +IMAGE_FULL=$(REGISTRY_URL)/$(NAMESPACE)/$(IMAGE_NAME):$(TAG) + +build: + docker build -t $(IMAGE_NAME):$(TAG) . + +tag: + docker tag $(IMAGE_NAME):$(TAG) $(IMAGE_FULL) + +push: + docker push $(IMAGE_FULL) + +run: + docker run -d \ + --name $(APP_NAME) \ + -p $(HOST_PORT):$(CONTAINER_PORT) \ + --env-file .env \ + $(IMAGE_FULL) + +stop: + docker stop $(APP_NAME) || true + docker rm $(APP_NAME) || true + +deploy: build tag push stop run \ No newline at end of file