From d5558807f45974c012395d518f324612c0a87f70 Mon Sep 17 00:00:00 2001 From: Deeksha M <deeksha.m@niveussolutions.com> Date: Thu, 23 Nov 2023 10:57:58 +0530 Subject: [PATCH] Initial --- Jenkinsfile | 83 ++++++++++++++++++++++++++++++++++++++++++++++ k8/deployment.yaml | 19 +++++++++++ k8/service.yaml | 11 ++++++ 3 files changed, 113 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..f7cf34b --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,83 @@ +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('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 gradle --builder gcr.io/buildpacks/google-22/builder@sha256:ffa092c09ffb147b2ce9658eb6590aa9af2caffb2d513ab8546bb510b74e0225' + sh 'docker tag gradle us-central1-docker.pkg.dev/tech-rnd-project/test-node/gradle' + } + } + + stage('Push Docker Image') { + steps { + script { + echo 'Push Docker Image' + sh 'gcloud auth configure-docker us-central1-docker.pkg.dev' + sh 'docker push us-central1-docker.pkg.dev/tech-rnd-project/test-node/gradle' + // 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: 'admin@gmail.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/k8/deployment.yaml b/k8/deployment.yaml new file mode 100644 index 0000000..1c03232 --- /dev/null +++ b/k8/deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: "gradle-app" +spec: + replicas: 1 + selector: + matchLabels: + app: "gradle-app" + template: + metadata: + labels: + app: "gradle-app" + spec: + containers: + - name: "gradle-app" + image: us-central1-docker.pkg.dev/tech-rnd-project/test-node/gradle + ports: + - containerPort: 8080 diff --git a/k8/service.yaml b/k8/service.yaml new file mode 100644 index 0000000..90cfa5b --- /dev/null +++ b/k8/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: "gradle-app" +spec: + ports: + - port: 8080 + targetPort: 8080 + type: "LoadBalancer" + selector: + app: "gradle-app" -- GitLab