From e2f480d8415b597488fe7cafbaae4cbde4d0c108 Mon Sep 17 00:00:00 2001 From: tobaina Date: Mon, 12 May 2025 18:23:41 -0400 Subject: [PATCH 1/5] Add Jenkinsfile for CI/CD pipeline --- Jenkinsfile | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..b690eb2 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,37 @@ +pipeline { + agent any + + environment { + IMAGE_NAME = "your-dockerhub-username/java-web-calculator" + } + + stages { + stage('Clone Repo') { + steps { + echo 'Code already cloned by Jenkins.' + } + } + + stage('Build Docker Image') { + steps { + script { + sh 'docker build -t $IMAGE_NAME .' + } + } + } + + stage('Login to Docker Hub') { + steps { + withCredentials([usernamePassword(credentialsId: 'docker-hub-creds', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { + sh 'echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin' + } + } + } + + stage('Push to Docker Hub') { + steps { + sh 'docker push $IMAGE_NAME' + } + } + } +} From f9002404795e2488123ac12737b97caff5457dd3 Mon Sep 17 00:00:00 2001 From: tobaina Date: Mon, 12 May 2025 19:04:48 -0400 Subject: [PATCH 2/5] Add Dockerfile for Jenkins CI build --- Dockerfile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3b4eb29 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# Use official OpenJDK image +FROM openjdk:11 + +# Create app directory +WORKDIR /app + +# Copy source code +COPY . /app + +# Build the Java app using Maven (if using pom.xml) +RUN ./mvnw package + +# Run the compiled Java program (adjust this based on your main class) +CMD ["java", "-cp", "target/classes", "Calculator"] From 85b131355a6f823a8010339fcb6a5fd329b70ccb Mon Sep 17 00:00:00 2001 From: tobaina Date: Mon, 12 May 2025 19:09:47 -0400 Subject: [PATCH 3/5] Fix Java version to 11 in pom.xml --- pom.xml | 48 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index 9e1759e..d84dcff 100644 --- a/pom.xml +++ b/pom.xml @@ -1,12 +1,15 @@ - + 4.0.0 + com.web.cal WebAppCal war 0.0.6 WebAppCal Maven Webapp http://maven.apache.org + junit @@ -14,17 +17,32 @@ 4.8.2 test - - - javax.servlet - servlet-api - 2.5 - - - - - releases - http://52.204.135.48:8081/nexus/content/repositories/releases - - + + + javax.servlet + servlet-api + 2.5 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + + + + + + + + releases + http://52.204.135.48:8081/nexus/content/repositories/releases + + From 66395023bc2dde28300744863893888f064bd239 Mon Sep 17 00:00:00 2001 From: tobaina Date: Mon, 12 May 2025 19:11:45 -0400 Subject: [PATCH 4/5] Fix Dockerfile to install Maven and use mvn build --- Dockerfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3b4eb29..7867954 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,14 @@ -# Use official OpenJDK image FROM openjdk:11 -# Create app directory +# Install Maven +RUN apt-get update && \ + apt-get install -y maven + +# Set working directory WORKDIR /app -# Copy source code +# Copy all files from your project folder into the image COPY . /app -# Build the Java app using Maven (if using pom.xml) -RUN ./mvnw package - -# Run the compiled Java program (adjust this based on your main class) -CMD ["java", "-cp", "target/classes", "Calculator"] +# Build the Java app using Maven +RUN mvn clean package From ad32d44045774809cdde5ca8b5f9d72fb732db2e Mon Sep 17 00:00:00 2001 From: tobaina Date: Mon, 12 May 2025 22:22:19 -0400 Subject: [PATCH 5/5] Add Jenkinsfile for CI/CD pipeline --- Jenkinsfile | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b690eb2..69dd7dd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,36 +1,41 @@ pipeline { agent any - + environment { - IMAGE_NAME = "your-dockerhub-username/java-web-calculator" + DOCKER_IMAGE = 'tobaina/java-web-calculator' } stages { - stage('Clone Repo') { + stage('Checkout') { steps { - echo 'Code already cloned by Jenkins.' + git 'https://github.com/tobaina/JavaWeb3.git' } } - + stage('Build Docker Image') { steps { script { - sh 'docker build -t $IMAGE_NAME .' + // Build the Docker image + sh 'docker build -t ${DOCKER_IMAGE} .' } } } - - stage('Login to Docker Hub') { + + stage('Push to Docker Hub') { steps { - withCredentials([usernamePassword(credentialsId: 'docker-hub-creds', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { - sh 'echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin' + script { + // Push the Docker image to Docker Hub + sh 'docker push ${DOCKER_IMAGE}' } } } - - stage('Push to Docker Hub') { + + stage('Run the Docker Container') { steps { - sh 'docker push $IMAGE_NAME' + script { + // Run the Docker container + sh 'docker run -d -p 8080:8080 ${DOCKER_IMAGE}' + } } } }