From 4ff15a703e4d906a9666c2f246bf80b56c0cbc24 Mon Sep 17 00:00:00 2001 From: "prajwal.amin" <prajwal.amin@niveussolutions.com> Date: Thu, 4 Apr 2024 09:12:29 +0530 Subject: [PATCH] Initial commit by containerization --- Jenkinsfile | 99 ++++++++++++++++++++++++++++++++++++++++++++++ build.gradle | 1 + k8/deployment.yaml | 19 +++++++++ k8/service.yaml | 11 ++++++ 4 files changed, 130 insertions(+) create mode 100644 Jenkinsfile create mode 100644 k8/deployment.yaml create mode 100644 k8/service.yaml diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..c0f12d6 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,99 @@ +pipeline { + agent any + + tools { + gradle 'Gradle' + } + environment { + PROJECT_ID = "tech-rnd-project" + CLUSTER_NAME = "cluster" + LOCATION = "us-central1-a" + CREDENTIALS_ID = "kubernetes" + } + + stages { + stage('Scm Checkout') { + steps { + checkout scm + } + } + + stage('Build') { + steps { + sh 'chmod u+x gradlew' + sh './gradlew' + sh './gradlew build' + } + } + + stage('Test') { + steps { + sh './gradlew test' + } + } + + stage('SonarQube analysis') { + steps { + withSonarQubeEnv('java-sonarqube-server') { + sh "./gradlew sonarqube" + } + } + } + + stage('Build Docker Image') { + steps { + sh 'whoami' + sh 'sudo chmod 777 /var/run/docker.sock' + sh 'sudo apt update' + sh 'sudo apt install software-properties-common' + sh 'sudo add-apt-repository ppa:cncf-buildpacks/pack-cli' + sh 'sudo apt-get update' + sh 'sudo apt-get install pack-cli' + sh 'pack build java-postgress --builder gcr.io/buildpacks/google-22/builder@sha256:ffa092c09ffb147b2ce9658eb6590aa9af2caffb2d513ab8546bb510b74e0225' + } + } + + // stage('Image Scan') { + // steps { + // //add steps here + // echo 'image scanning' + // sh 'trivy image --no-progress --exit-code 1 --severity CRITICAL java-postgress' + // } + // } + + stage('Push Docker Image') { + steps { + script { + echo 'Push Docker Image' + sh 'docker tag java-postgress us-central1-docker.pkg.dev/tech-rnd-project/container-node/nodejs' + sh 'gcloud auth configure-docker us-central1-docker.pkg.dev' + sh 'docker push us-central1-docker.pkg.dev/tech-rnd-project/container-node/nodejs' + // sh 'curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl' + // sh 'chmod +x kubectl' + // sh "sudo mv kubectl \$(which kubectl)" + + } + } + } + stage('Deploy to K8s') { + steps { + echo 'Deployment started ...' + sh 'ls -ltr' + sh 'pwd' + echo 'Start deployment of deployment.yaml' + step([$class: 'KubernetesEngineBuilder', projectId: env.PROJECT_ID, clusterName: env.CLUSTER_NAME, location: env.LOCATION, manifestPattern: 'k8', credentialsId: env.CREDENTIALS_ID, verifyDeployments: true]) + echo 'Deployment Finished ...' + sh ''' + ''' + } + } + } + post { + always { + emailext to: 'prajwal.amin@niveussolutions.com', + subject: "jenkins build:${currentBuild.currentResult}: ${env.JOB_NAME}", + body: "${currentBuild.currentResult}: Job ${env.JOB_NAME}\nMore Info can be found in the attached log", + attachLog: true + } + } +} diff --git a/build.gradle b/build.gradle index f49a17b..0dae865 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,5 @@ plugins { + id "org.sonarqube" version "4.4.1.3373" id 'java' id 'org.springframework.boot' version '3.1.5' id 'io.spring.dependency-management' version '1.1.3' diff --git a/k8/deployment.yaml b/k8/deployment.yaml new file mode 100644 index 0000000..752e2be --- /dev/null +++ b/k8/deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: java-gradle-app +spec: + replicas: 1 + selector: + matchLabels: + app: java-gradle-app + template: + metadata: + labels: + app: java-gradle-app + spec: + containers: + - name: java-gradle-app + image: us-central1-docker.pkg.dev/tech-rnd-project/container-node/nodejs + ports: + - containerPort: 8080 diff --git a/k8/service.yaml b/k8/service.yaml new file mode 100644 index 0000000..9c3a748 --- /dev/null +++ b/k8/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: java-gradle-app +spec: + ports: + - port: 8080 + targetPort: 8080 + type: LoadBalancer + selector: + app: java-gradle-app -- GitLab