From c8730808f351ce08d231bbc500dfc1db8e202183 Mon Sep 17 00:00:00 2001 From: "prajwal.amin" <deeksha.m@niveussolutions.com> Date: Thu, 17 Oct 2024 17:58:37 +0530 Subject: [PATCH] Initial commit by Containerization --- Jenkinsfile | 72 ++++++++++++++++++++++++++++++++++++++++++++++ k8/deployment.yaml | 19 ++++++++++++ k8/service.yaml | 11 +++++++ 3 files changed, 102 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..3d5cf67 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,72 @@ +pipeline { + agent any + + + + + + environment { + PROJECT_ID = "tech-rnd-project" + CLUSTER_NAME = "cluster" + LOCATION = "us-central1-a" + CREDENTIALS_ID = "kubernetes" + MASTER_SERVICE_ACCOUNT_EMAIL = "example@tech-rnd-project.iam.gserviceaccount.com" + + } + + stages { + stage('Scm Checkout') { + steps { + checkout scm + } + } + + + 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('Push Docker Image') { + steps { + script { + echo 'Push Docker Image' + sh 'gcloud config set auth/impersonate_service_account ${MASTER_SERVICE_ACCOUNT_EMAIL}' + 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' + } + } + } + + + stage('Deploy to K8') { + steps { + script { + sh "gcloud config set project tech-rnd-project" + sh "gcloud container clusters get-credentials cluster --zone us-central1-a" + sh 'kubectl apply -f k8/deployment.yaml' + sh 'kubectl apply -f k8/service.yaml' + } + } + } + + } + post { + always { + emailext to: 'email_id', + 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..aaf9720 --- /dev/null +++ b/k8/deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test +spec: + replicas: 1 + selector: + matchLabels: + app: test + template: + metadata: + labels: + app: test + spec: + containers: + - name: test + 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..1f5460d --- /dev/null +++ b/k8/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: test +spec: + ports: + - port: 8080 + targetPort: 8080 + type: LoadBalancer + selector: + app: test -- GitLab