From 42dee8a0f8f2bed2768e9363d80f62f96d0233c4 Mon Sep 17 00:00:00 2001 From: Marija Stopa Date: Mon, 13 Jan 2025 12:41:23 +0100 Subject: [PATCH] Update new Jenkinsfile --- Jenkinsfile | 83 ++++++++++++++--------------------------------------- 1 file changed, 21 insertions(+), 62 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1f56786d9..12d875ef4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,15 +3,10 @@ pipeline { environment { DOCKER_REPO_MAIN = 'marijastopa/main-jenkins' DOCKER_REPO_MR = 'marijastopa/mr-jenkins' - GIT_COMMIT_SHORT = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim() - DOCKER_IMAGE_MAIN = 'marijastopa/main-jenkins' - DOCKER_IMAGE_MR = 'marijastopa/mr-jenkins' } stages { stage('Prepare') { steps { - echo "Branch: ${env.BRANCH_NAME}" - echo "Commit: ${GIT_COMMIT_SHORT}" echo "Preparing environment..." script { BRANCH_NAME = env.BRANCH_NAME ?: 'main' @@ -21,99 +16,69 @@ pipeline { } } } - // Jobs for Merge Requests + + // Merge Request Pipeline Stages stage('Checkstyle') { when { - expression { - return env.BRANCH_NAME != 'main' - BRANCH_NAME != 'main' - } + expression { BRANCH_NAME != 'main' } } steps { echo "Running Checkstyle..." sh './gradlew checkstyleMain checkstyleTest' archiveArtifacts artifacts: '**/build/reports/checkstyle/*.xml', allowEmptyArchive: true - echo "Checkstyle completed and reports archived" } } stage('Test') { when { - expression { - return env.BRANCH_NAME != 'main' - BRANCH_NAME != 'main' - } + expression { BRANCH_NAME != 'main' } } steps { echo "Running Tests..." - echo "Running tests..." sh './gradlew test' junit '**/build/test-results/test/*.xml' } } stage('Build without Tests') { when { - expression { - return env.BRANCH_NAME != 'main' - BRANCH_NAME != 'main' - } + expression { BRANCH_NAME != 'main' } } steps { - echo "Building without running tests..." - echo "Building application (without tests)..." + echo "Building application without tests..." sh './gradlew clean build -x test' } } stage('Docker Build & Push (Merge Request)') { when { - expression { - return env.BRANCH_NAME != 'main' - BRANCH_NAME != 'main' - } + expression { BRANCH_NAME != 'main' } } steps { - echo "Building Docker image for MR..." - sh "docker build -t ${DOCKER_REPO_MR}:${GIT_COMMIT_SHORT} ." - withCredentials([string(credentialsId: 'dockerhub-credentials', variable: 'DOCKER_PASS')]) { - sh ''' - echo $DOCKER_PASS | docker login -u marijastopa --password-stdin - docker push ${DOCKER_REPO_MR}:${GIT_COMMIT_SHORT} - docker tag ${DOCKER_REPO_MR}:${GIT_COMMIT_SHORT} ${DOCKER_REPO_MR}:latest - docker push ${DOCKER_REPO_MR}:latest - ''' echo "Building Docker image for merge request..." withCredentials([usernamePassword(credentialsId: 'dockerhub-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { sh """ - docker build -t $DOCKER_IMAGE_MR:${COMMIT} . + docker build -t ${DOCKER_REPO_MR}:${COMMIT} . echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin - docker push $DOCKER_IMAGE_MR:${COMMIT} - docker tag $DOCKER_IMAGE_MR:${COMMIT} $DOCKER_IMAGE_MR:latest - docker push $DOCKER_IMAGE_MR:latest + docker push ${DOCKER_REPO_MR}:${COMMIT} + docker tag ${DOCKER_REPO_MR}:${COMMIT} ${DOCKER_REPO_MR}:latest + docker push ${DOCKER_REPO_MR}:latest """ } } } - // Jobs for Main Branch + + // Main Branch Pipeline Stage stage('Docker Build & Push (Main Branch)') { when { branch 'main' } steps { echo "Building Docker image for main branch..." - sh "docker build -t ${DOCKER_REPO_MAIN}:${GIT_COMMIT_SHORT} ." - withCredentials([string(credentialsId: 'dockerhub-credentials', variable: 'DOCKER_PASS')]) { - sh ''' - echo $DOCKER_PASS | docker login -u marijastopa --password-stdin - docker push ${DOCKER_REPO_MAIN}:${GIT_COMMIT_SHORT} - docker tag ${DOCKER_REPO_MAIN}:${GIT_COMMIT_SHORT} ${DOCKER_REPO_MAIN}:latest - docker push ${DOCKER_REPO_MAIN}:latest - ''' withCredentials([usernamePassword(credentialsId: 'dockerhub-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { sh """ - docker build -t $DOCKER_IMAGE_MAIN:${COMMIT} . + docker build -t ${DOCKER_REPO_MAIN}:${COMMIT} . echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin - docker push $DOCKER_IMAGE_MAIN:${COMMIT} - docker tag $DOCKER_IMAGE_MAIN:${COMMIT} $DOCKER_IMAGE_MAIN:latest - docker push $DOCKER_IMAGE_MAIN:latest + docker push ${DOCKER_REPO_MAIN}:${COMMIT} + docker tag ${DOCKER_REPO_MAIN}:${COMMIT} ${DOCKER_REPO_MAIN}:latest + docker push ${DOCKER_REPO_MAIN}:latest """ } } @@ -122,22 +87,16 @@ pipeline { post { always { echo "Cleaning up Docker images..." - sh 'docker rmi $(docker images -f "dangling=true" -q) || true' + sh """ + docker ps -a -q | xargs --no-run-if-empty docker rm -f || true + docker images -f dangling=true -q | xargs --no-run-if-empty docker rmi -f || true + """ } success { echo "Pipeline completed successfully!" - sh """ - docker ps -a -q | xargs docker rm -f || true - docker images -f dangling=true -q | xargs docker rmi -f || true - """ } failure { echo "Pipeline failed. Check logs for errors." - echo 'Pipeline failed. Check logs for errors.' - } - success { - echo 'Pipeline executed successfully!' } } } -}