From ab7b7daf98b38b68a165d7c39c06c301783fbeb3 Mon Sep 17 00:00:00 2001 From: rakeshSgr Date: Thu, 30 May 2024 17:39:49 +0530 Subject: [PATCH 1/2] deployment files added --- Jenkinsfile | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ build.sh | 15 +++++++++++ 2 files changed, 86 insertions(+) create mode 100644 Jenkinsfile create mode 100644 build.sh diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..0d1d6b7a6 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,71 @@ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + ansiColor('xterm') { + stage('Checkout') { + cleanWs() + checkout scm + } + } + stage('docker-pre-build') { + sh ''' + cd $docker_file_path + pwd + docker build -f ./Dockerfile.build -t $docker_pre_build . + docker run --name $docker_pre_build $docker_pre_build:latest && docker cp $docker_pre_build:/opt/target/sb-cb-ext-0.0.1-SNAPSHOT.jar . + docker rm -f $docker_pre_build + docker rmi -f $docker_pre_build + ''' + } + + stage('SonarQube analysis') { + // requires SonarQube Scanner 2.8+ + def scannerHome = tool 'sonar_scanner'; + withSonarQubeEnv('sonarqube') { + sh 'cd $docker_file_path && mvn clean package sonar:sonar' + } + } + stage("Quality Gate") { + timeout(time: 1, unit: 'HOURS') { // Just in case something goes wrong, pipeline will be killed after a timeout + def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv + if (qg.status != 'OK') { + error "Pipeline aborted due to quality gate failure: ${qg.status}" + } + } + } + + + + stage('docker-build') { + sh ''' + commit_id=$(git rev-parse --short HEAD) + echo $commit_id> commit_id.txt + cd $docker_file_path + pwd + docker build -t $docker_server/$docker_repo:$commit_id . + docker tag $docker_server/$docker_repo:$commit_id $docker_server/$docker_repo:$image_tag + ''' + } + stage('docker-push') { + + sh ''' + pwd + commit_id=$(git rev-parse --short HEAD) + docker push $docker_server/$docker_repo:$commit_id + docker push $docker_server/$docker_repo:$image_tag + docker rmi -f $docker_server/$docker_repo:$commit_id + docker rmi -f $docker_server/$docker_repo:$image_tag + ''' + } + +} + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100644 index 000000000..dd92e1af3 --- /dev/null +++ b/build.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +echo "Docker build script" + +# Build script +set -eo pipefail + +build_tag=$1 +name=sb-cb-ext-service +node=$2 +org=$3 + +docker build -f ./Dockerfile --label commitHash=$(git rev-parse --short HEAD) -t ${org}/${name}:${build_tag} . + +echo {\"image_name\" : \"${name}\", \"image_tag\" : \"${build_tag}\", \"node_name\" : \"$node\"} > metadata.json \ No newline at end of file From 631d98a20e5b2ea8246e1cf54d9aec23136098d2 Mon Sep 17 00:00:00 2001 From: rakeshSgr Date: Fri, 31 May 2024 12:34:09 +0530 Subject: [PATCH 2/2] updating Jenkins and build file --- Jenkinsfile | 88 +++++++++++++++++++---------------------------------- build.sh | 2 +- 2 files changed, 33 insertions(+), 57 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0d1d6b7a6..276f29385 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,71 +1,47 @@ -node() { +node('build-slave') { try { String ANSI_GREEN = "\u001B[32m" String ANSI_NORMAL = "\u001B[0m" String ANSI_BOLD = "\u001B[1m" String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - + ansiColor('xterm') { - stage('Checkout') { + stage('Checkout') { + if (!env.hub_org) { + println(ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) + error 'Please resolve the errors and rerun..' + } else + println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) + } + cleanWs() - checkout scm - } - } - stage('docker-pre-build') { - sh ''' - cd $docker_file_path - pwd - docker build -f ./Dockerfile.build -t $docker_pre_build . - docker run --name $docker_pre_build $docker_pre_build:latest && docker cp $docker_pre_build:/opt/target/sb-cb-ext-0.0.1-SNAPSHOT.jar . - docker rm -f $docker_pre_build - docker rmi -f $docker_pre_build - ''' - } - - stage('SonarQube analysis') { - // requires SonarQube Scanner 2.8+ - def scannerHome = tool 'sonar_scanner'; - withSonarQubeEnv('sonarqube') { - sh 'cd $docker_file_path && mvn clean package sonar:sonar' - } - } - stage("Quality Gate") { - timeout(time: 1, unit: 'HOURS') { // Just in case something goes wrong, pipeline will be killed after a timeout - def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv - if (qg.status != 'OK') { - error "Pipeline aborted due to quality gate failure: ${qg.status}" - } - } - } - - + checkout scm + commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + build_tag = sh(script: "echo " + params.github_release_tag.split('/')[-1] + "_" + commit_hash + "_" + env.BUILD_NUMBER, returnStdout: true).trim() + echo "build_tag: " + build_tag + - stage('docker-build') { - sh ''' - commit_id=$(git rev-parse --short HEAD) - echo $commit_id> commit_id.txt - cd $docker_file_path - pwd - docker build -t $docker_server/$docker_repo:$commit_id . - docker tag $docker_server/$docker_repo:$commit_id $docker_server/$docker_repo:$image_tag - ''' - } - stage('docker-push') { + stage('Build') { + env.NODE_ENV = "build" + print "Environment will be : ${env.NODE_ENV}" + sh('chmod 777 build.sh') + sh("bash -x build.sh ${build_tag} ${env.NODE_NAME} ${docker_server}") + } - sh ''' - pwd - commit_id=$(git rev-parse --short HEAD) - docker push $docker_server/$docker_repo:$commit_id - docker push $docker_server/$docker_repo:$image_tag - docker rmi -f $docker_server/$docker_repo:$commit_id - docker rmi -f $docker_server/$docker_repo:$image_tag - ''' - } - -} + + stage('ArchiveArtifacts') { + sh ("echo ${build_tag} > build_tag.txt") + archiveArtifacts "metadata.json" + archiveArtifacts "build_tag.txt" + currentBuild.description = "${build_tag}" + } + + } + } catch (err) { currentBuild.result = "FAILURE" throw err } + } \ No newline at end of file diff --git a/build.sh b/build.sh index dd92e1af3..25b52e1a2 100644 --- a/build.sh +++ b/build.sh @@ -6,7 +6,7 @@ echo "Docker build script" set -eo pipefail build_tag=$1 -name=sb-cb-ext-service +name=mentoring-user-service node=$2 org=$3