From 2f1e863ff30f981dddfa4c90059859b542f506e2 Mon Sep 17 00:00:00 2001 From: jmpires <47697862+jmpires@users.noreply.github.com> Date: Mon, 13 May 2024 17:07:52 +0100 Subject: [PATCH 01/10] Create myTrigger.txt --- myTrigger.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 myTrigger.txt diff --git a/myTrigger.txt b/myTrigger.txt new file mode 100644 index 0000000..f001eca --- /dev/null +++ b/myTrigger.txt @@ -0,0 +1 @@ +first pull trigger From 16a3a7e4337fa8d0dbb8f5780862292cad7a8161 Mon Sep 17 00:00:00 2001 From: jmpires <47697862+jmpires@users.noreply.github.com> Date: Mon, 13 May 2024 17:13:23 +0100 Subject: [PATCH 02/10] Update myTrigger.txt 2nd try --- myTrigger.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/myTrigger.txt b/myTrigger.txt index f001eca..e7620b0 100644 --- a/myTrigger.txt +++ b/myTrigger.txt @@ -1 +1,2 @@ first pull trigger +second try ... From cf058660f45ea1312ffa3387c1730eb246a0038c Mon Sep 17 00:00:00 2001 From: jmpires <47697862+jmpires@users.noreply.github.com> Date: Tue, 14 May 2024 17:03:53 +0100 Subject: [PATCH 03/10] Create Jenkinsfile --- Jenkinsfile | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..6b2622f --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,34 @@ +pipeline { + agent any + + tools { + maven 'Maven 3.9.6' + } + + stages{ + stage("build"){ + steps{ + echo 'compiling sysfoo app...' + sh 'mvn compile' + } + } + stage("test"){ + steps{ + echo 'running unit tests...' + sh 'mvn clean test' + } + } + stage("package"){ + steps{ + echo 'packaging the app...' + sh 'mvn package -DskipTests' + } + } + } + + post{ + always{ + echo 'This pipeline is completed..' + } + } +} From 6e0fd199db728bc9ba87f96117fbcd1c110cbf7a Mon Sep 17 00:00:00 2001 From: jmpires <47697862+jmpires@users.noreply.github.com> Date: Tue, 14 May 2024 18:26:31 +0100 Subject: [PATCH 04/10] added artifacts archival and pre-steps --- Jenkinsfile | 60 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6b2622f..8ada3fc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,34 +1,42 @@ pipeline { agent any - - tools { - maven 'Maven 3.9.6' - } - - stages{ - stage("build"){ - steps{ - echo 'compiling sysfoo app...' - sh 'mvn compile' - } + stages { + stage('build') { + steps { + echo 'compiling sysfoo app...' + sh 'mvn compile' } - stage("test"){ - steps{ - echo 'running unit tests...' - sh 'mvn clean test' - } + } + + stage('test') { + steps { + echo 'running unit tests...' + sh 'mvn clean test' } - stage("package"){ - steps{ - echo 'packaging the app...' - sh 'mvn package -DskipTests' - } + } + + stage('package') { + steps { + echo 'packaging the app...' + sh '''#Truncate the GIT_COMIT to the first 7 characters +GIT_SHORT_COMMIT=$(echo $GIT_COMMIT | cut -c 1-7) + +# Set the version using Maven +mvn versions:set -DnewVersion="$GIT_SHORT_COMMIT" +mvn versions:commit''' + sh 'mvn package -DskipTests' + archiveArtifacts '**/target/*.jar' } - } + } - post{ - always{ - echo 'This pipeline is completed..' + } + tools { + maven 'Maven 3.9.6' + } + post { + always { + echo 'This pipeline is completed..' } + } -} +} \ No newline at end of file From 02ddc0514e967d08423e82575b6ceee43ce477bb Mon Sep 17 00:00:00 2001 From: Jorge Pires Date: Wed, 15 May 2024 16:52:55 +0100 Subject: [PATCH 05/10] file for test --- changelog.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changelog.txt diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..3d028f1 --- /dev/null +++ b/changelog.txt @@ -0,0 +1,2 @@ +CH01 +CH02 From 5932d1501d86890e881ebc941d6b11cec8f4fa6d Mon Sep 17 00:00:00 2001 From: Jorge Pires Date: Wed, 15 May 2024 17:22:32 +0100 Subject: [PATCH 06/10] updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 301005c..4ffffda 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Sysfoo Application -A Devops Learning App +A Devops Learning App useful for CI Implementation ## About the Application From 1201547f4553b3dd0ab3c646d439665092aa3ab9 Mon Sep 17 00:00:00 2001 From: jmpires <47697862+jmpires@users.noreply.github.com> Date: Tue, 21 May 2024 15:28:27 +0100 Subject: [PATCH 07/10] per stage docker agent --- Jenkinsfile | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8ada3fc..678ebe8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,13 @@ pipeline { - agent any + agent none stages { stage('build') { + agent { + docker { + image 'maven:3.9.6-eclipse-temurin-17' + } + + } steps { echo 'compiling sysfoo app...' sh 'mvn compile' @@ -9,6 +15,12 @@ pipeline { } stage('test') { + agent { + docker { + image 'maven:3.9.6-eclipse-temurin-17' + } + + } steps { echo 'running unit tests...' sh 'mvn clean test' @@ -16,6 +28,12 @@ pipeline { } stage('package') { + agent { + docker { + image 'maven:3.9.6-eclipse-temurin-17' + } + + } steps { echo 'packaging the app...' sh '''#Truncate the GIT_COMIT to the first 7 characters From 9ab062a0be810545119e02e015dbc1645ff99114 Mon Sep 17 00:00:00 2001 From: Jorge Pires Date: Wed, 22 May 2024 15:22:03 +0100 Subject: [PATCH 08/10] multi stage Dockerfile --- Dockerfile | 20 ++++++++------------ Dockerfile_singlestage | 12 ++++++++++++ Dockerfile_tmp | 15 +++++++++++++++ 3 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 Dockerfile_singlestage create mode 100644 Dockerfile_tmp diff --git a/Dockerfile b/Dockerfile index 0cd95b6..4c6a0cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,11 @@ -# Stage 1: Build the application -FROM maven:3.8.1-openjdk-17-slim AS build +FROM maven:3.9.6-eclipse-temurin-17 AS BUILD WORKDIR /app -COPY pom.xml . -COPY src ./src -RUN mvn clean package -DskipTests +COPY . . +RUN mvn package -DskipTests -FROM build as test -CMD mvn clean test - -FROM openjdk:17-jdk-alpine -WORKDIR /app -COPY --from=build /app/target/sysfoo-0.0.1-SNAPSHOT.jar ./sysfoo.jar +FROM eclipse-temurin:22-jre-alpine +WORKDIR /run +COPY --from=BUILD /app/target/sysfoo*.jar sysfoo.jar EXPOSE 8080 -ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "sysfoo.jar"] + +CMD java -jar /run/sysfoo.jar \ No newline at end of file diff --git a/Dockerfile_singlestage b/Dockerfile_singlestage new file mode 100644 index 0000000..957e413 --- /dev/null +++ b/Dockerfile_singlestage @@ -0,0 +1,12 @@ +FROM maven:3.9.6-eclipse-temurin-17 + +WORKDIR /build + +COPY . . + +RUN mvn package -DskipTests && \ + mv target/sysfoo*.jar /run/sysfoo.jar + +EXPOSE 8080 + +CMD java -jar /run/sysfoo.jar \ No newline at end of file diff --git a/Dockerfile_tmp b/Dockerfile_tmp new file mode 100644 index 0000000..0cd95b6 --- /dev/null +++ b/Dockerfile_tmp @@ -0,0 +1,15 @@ +# Stage 1: Build the application +FROM maven:3.8.1-openjdk-17-slim AS build +WORKDIR /app +COPY pom.xml . +COPY src ./src +RUN mvn clean package -DskipTests + +FROM build as test +CMD mvn clean test + +FROM openjdk:17-jdk-alpine +WORKDIR /app +COPY --from=build /app/target/sysfoo-0.0.1-SNAPSHOT.jar ./sysfoo.jar +EXPOSE 8080 +ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "sysfoo.jar"] From d760148e80211d714fd514131beb2ece37e4d054 Mon Sep 17 00:00:00 2001 From: jmpires <47697862+jmpires@users.noreply.github.com> Date: Wed, 22 May 2024 16:09:47 +0100 Subject: [PATCH 09/10] added Docker Image Build and Publish Stage --- Jenkinsfile | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 678ebe8..76ae439 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -28,22 +28,42 @@ pipeline { } stage('package') { - agent { - docker { - image 'maven:3.9.6-eclipse-temurin-17' - } + parallel { + stage('package') { + agent { + docker { + image 'maven:3.9.6-eclipse-temurin-17' + } - } - steps { - echo 'packaging the app...' - sh '''#Truncate the GIT_COMIT to the first 7 characters + } + steps { + echo 'packaging the app...' + sh '''#Truncate the GIT_COMIT to the first 7 characters GIT_SHORT_COMMIT=$(echo $GIT_COMMIT | cut -c 1-7) # Set the version using Maven mvn versions:set -DnewVersion="$GIT_SHORT_COMMIT" mvn versions:commit''' - sh 'mvn package -DskipTests' - archiveArtifacts '**/target/*.jar' + sh 'mvn package -DskipTests' + archiveArtifacts '**/target/*.jar' + } + } + + stage('Docker B&P') { + steps { + script { + docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin') { + def commitHash = env.GIT_COMMIT.take(7) + def dockerImage = docker.build("jmpires/sysfoo:${commitHash}", "./") + dockerImage.push() + dockerImage.push("latest") + dockerImage.push("dev") + } + } + + } + } + } } From c6234e155391480e72c49761fafb6af6ee897ef3 Mon Sep 17 00:00:00 2001 From: jmpires <47697862+jmpires@users.noreply.github.com> Date: Wed, 22 May 2024 16:38:55 +0100 Subject: [PATCH 10/10] added agent any for for docker b&p --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 76ae439..d190fd6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ pipeline { - agent none + agent any stages { stage('build') { agent {