From 0d30e714cb93987bb4fdcb7b06bed1db6e29e45e Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sat, 10 May 2025 09:00:04 +0000 Subject: [PATCH 01/18] Update Dockerfile --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index b571261..b5cd7a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM node:18-alpine AS builder # Add metadata for authorship and app identification -LABEL maintainer="Amitabh Soni " \ +LABEL maintainer="Shubham Tayde " \ app="gemini" \ stage="build" @@ -27,7 +27,7 @@ RUN rm -rf node_modules && npm cache clean --force FROM node:18-alpine AS production # Add metadata for the final image -LABEL maintainer="Amitabh Soni " \ +LABEL maintainer="Shubham Tayde " \ app="gemini" \ stage="production" @@ -47,4 +47,4 @@ ENV NODE_ENV=production EXPOSE 3000 -CMD ["npm", "start"] \ No newline at end of file +CMD ["npm", "start"] From 58bae8ba320ed43c7cae0c4c6343f8f1147708fb Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 14:43:27 +0530 Subject: [PATCH 02/18] Update Jenkinsfile --- GitOps/Jenkinsfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/GitOps/Jenkinsfile b/GitOps/Jenkinsfile index d743d8f..bd58d5a 100644 --- a/GitOps/Jenkinsfile +++ b/GitOps/Jenkinsfile @@ -1,7 +1,7 @@ @Library('Shared')_ pipeline { - agent { label 'dev-server' } + agent any parameters { string(name: 'GEMINI_DOCKER_TAG', defaultValue: 'v1', description: 'Docker tag for gemini image') @@ -16,7 +16,7 @@ pipeline { stage("Git: Code Checkout") { steps { - clone("https://github.com/Amitabh-DevOps/dev-gemini-clone.git", "DevOps") + clone("https://github.com/AWS-DevOps-shubh/dev-gemini-clone.git", "dev-shubh") } } @@ -29,7 +29,7 @@ pipeline { stage("Update: Kubernetes Manifest") { steps { dir('kubernetes') { - sh "sed -i 's|amitabhdevops/geminiamit.*|amitabhdevops/geminiamit:${params.GEMINI_DOCKER_TAG}|' gemini-deployment.yml" + sh "sed -i 's|devshubh2204/geminishubham.*|devshubh2204/geminishubham:${params.GEMINI_DOCKER_TAG}|' gemini-deployment.yml" } } } @@ -48,7 +48,7 @@ pipeline { git commit -m "Update gemini image to ${GEMINI_DOCKER_TAG}" echo "Pushing changes to github: " - git push https://github.com/Amitabh-DevOps/dev-gemini-clone.git DevOps + git push https://github.com/AWS-DevOps-shubh/dev-gemini-clone.git dev-shubh ''' } } @@ -106,7 +106,7 @@ pipeline {

""", - to: "amitabhdevops2024@gmail.com", + to: "shubhamtayde2409@gmail.com", from: "jenkins@example.com", mimeType: 'text/html' ) @@ -158,7 +158,7 @@ pipeline {

""", - to: "amitabhdevops2024@gmail.com", + to: "shubhamtayde2409@gmail.com", from: "jenkins@example.com", mimeType: 'text/html' ) @@ -167,4 +167,4 @@ pipeline { cleanWs() } } -} \ No newline at end of file +} From 193d208e3950a951cec591c1c41c692f69581f91 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 15:23:11 +0530 Subject: [PATCH 03/18] Update secrets.yml --- kubernetes/secrets.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml index c3aa90d..985250d 100644 --- a/kubernetes/secrets.yml +++ b/kubernetes/secrets.yml @@ -5,8 +5,9 @@ metadata: namespace: gemini-namespace type: Opaque data: - GOOGLE_ID: # Enter your Google ID here in base64 encoded format - GOOGLE_SECRET: # Enter your Google secret here in base64 encoded format - NEXTAUTH_SECRET: # Enter your NextAuth secret here in base64 encoded format - NEXT_PUBLIC_API_KEY: # Enter your API key here in base64 encoded format - MONGODB_URI: # Enter your MongoDB URI here in base64 encoded format \ No newline at end of file + GOOGLE_ID: MTAzMzg0MzU1OTMwLWhpZnBta2VhMGo2Z2Z1dm5lZmtwdnJhcTFqdW5vYXVmLmFwcHMuZ29vZ2xl +dXNlcmNvbnRlbnQuY29t # Enter your Google ID here in base64 encoded format + GOOGLE_SECRET: R09DU1BYLU9GZ3ZxaWo3X1JXbWZYOTRYOS13UUJnUnZ4bTk= # Enter your Google secret here in base64 encoded format + NEXTAUTH_SECRET: Qb8YA4ruozWvRotNqdC3thIjkjNkAkPuGGtAWy1etLQ= # Enter your NextAuth secret here in base64 encoded format + NEXT_PUBLIC_API_KEY: QUl6YVN5QldaYUEwUEtqZ1o3cF9FOC1aX1NwMld6WF9ldi1LeGM0 # Enter your API key here in base64 encoded format + MONGODB_URI: # Enter your MongoDB URI here in base64 encoded format From 0ef98906d76feb8291073e3197ff54f84f86a94e Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 15:50:59 +0530 Subject: [PATCH 04/18] Update secrets.yml --- kubernetes/secrets.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml index 985250d..ed70682 100644 --- a/kubernetes/secrets.yml +++ b/kubernetes/secrets.yml @@ -5,9 +5,7 @@ metadata: namespace: gemini-namespace type: Opaque data: - GOOGLE_ID: MTAzMzg0MzU1OTMwLWhpZnBta2VhMGo2Z2Z1dm5lZmtwdnJhcTFqdW5vYXVmLmFwcHMuZ29vZ2xl -dXNlcmNvbnRlbnQuY29t # Enter your Google ID here in base64 encoded format GOOGLE_SECRET: R09DU1BYLU9GZ3ZxaWo3X1JXbWZYOTRYOS13UUJnUnZ4bTk= # Enter your Google secret here in base64 encoded format NEXTAUTH_SECRET: Qb8YA4ruozWvRotNqdC3thIjkjNkAkPuGGtAWy1etLQ= # Enter your NextAuth secret here in base64 encoded format NEXT_PUBLIC_API_KEY: QUl6YVN5QldaYUEwUEtqZ1o3cF9FOC1aX1NwMld6WF9ldi1LeGM0 # Enter your API key here in base64 encoded format - MONGODB_URI: # Enter your MongoDB URI here in base64 encoded format + MONGODB_URI: c2h1YmhhbUAxMjM0 # Enter your MongoDB URI here in base64 encoded format From 7b15cba184b2640c83d8d6a3cfcd6355c186d94e Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 15:54:39 +0530 Subject: [PATCH 05/18] Update configmap.yml --- kubernetes/configmap.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kubernetes/configmap.yml b/kubernetes/configmap.yml index 9bb4d78..23a692b 100644 --- a/kubernetes/configmap.yml +++ b/kubernetes/configmap.yml @@ -4,4 +4,7 @@ metadata: name: gemini-config namespace: gemini-namespace data: - NEXTAUTH_URL: # Enter your NextAuth URL here(Domain name/URL) \ No newline at end of file + GOOGLE_ID: 103384355930-hifpmkea0j6gfuvnefkpvraq1junoauf.apps.googleusercontent.com + MONGODB_URI: mongodb://mongodb-service:27017/gemini + NEXTAUTH_URL: https://34.245.131.128.nip.io + MONGO_INITDB_ROOT_USERNAME: admin From 0b61366a187eae8bcfe42a9f9230c9d965374634 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 16:45:16 +0530 Subject: [PATCH 06/18] Update secrets.yml --- kubernetes/secrets.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml index ed70682..9a39e26 100644 --- a/kubernetes/secrets.yml +++ b/kubernetes/secrets.yml @@ -5,7 +5,7 @@ metadata: namespace: gemini-namespace type: Opaque data: - GOOGLE_SECRET: R09DU1BYLU9GZ3ZxaWo3X1JXbWZYOTRYOS13UUJnUnZ4bTk= # Enter your Google secret here in base64 encoded format - NEXTAUTH_SECRET: Qb8YA4ruozWvRotNqdC3thIjkjNkAkPuGGtAWy1etLQ= # Enter your NextAuth secret here in base64 encoded format - NEXT_PUBLIC_API_KEY: QUl6YVN5QldaYUEwUEtqZ1o3cF9FOC1aX1NwMld6WF9ldi1LeGM0 # Enter your API key here in base64 encoded format + GOOGLE_SECRET: R09DU1BYLUNIbVN1Zk04U3lsUDlRNlRhazhKa1pvNVpOUzQ= # Enter your Google secret here in base64 encoded format + NEXTAUTH_SECRET: 7mkoYHM3xl2QZZVMrzvT+gkSIxWUgbhNNkVc2nxkk2g= # Enter your NextAuth secret here in base64 encoded format + NEXT_PUBLIC_API_KEY: QUl6YVN5RFRxSUxCRktZUjEzX2tkRkNrY0MwUmY0ODZ3c3QyQUww # Enter your API key here in base64 encoded format MONGODB_URI: c2h1YmhhbUAxMjM0 # Enter your MongoDB URI here in base64 encoded format From 5fd081f12f873b89d1c59d15dc8c3c7a5b218547 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 16:46:25 +0530 Subject: [PATCH 07/18] Update configmap.yml --- kubernetes/configmap.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kubernetes/configmap.yml b/kubernetes/configmap.yml index 23a692b..31eac25 100644 --- a/kubernetes/configmap.yml +++ b/kubernetes/configmap.yml @@ -4,7 +4,7 @@ metadata: name: gemini-config namespace: gemini-namespace data: - GOOGLE_ID: 103384355930-hifpmkea0j6gfuvnefkpvraq1junoauf.apps.googleusercontent.com + GOOGLE_ID: 103384355930-9umr0lckbbq19kg26e2pmiaausekm45d.apps.googleusercontent.com MONGODB_URI: mongodb://mongodb-service:27017/gemini - NEXTAUTH_URL: https://34.245.131.128.nip.io + NEXTAUTH_URL: https://3.250.193.188.nip.io MONGO_INITDB_ROOT_USERNAME: admin From 94229867b255050847e4bfdffc4b1d555763855b Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 16:48:22 +0530 Subject: [PATCH 08/18] Update secrets.yml --- kubernetes/secrets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml index 9a39e26..bc1dde5 100644 --- a/kubernetes/secrets.yml +++ b/kubernetes/secrets.yml @@ -8,4 +8,4 @@ data: GOOGLE_SECRET: R09DU1BYLUNIbVN1Zk04U3lsUDlRNlRhazhKa1pvNVpOUzQ= # Enter your Google secret here in base64 encoded format NEXTAUTH_SECRET: 7mkoYHM3xl2QZZVMrzvT+gkSIxWUgbhNNkVc2nxkk2g= # Enter your NextAuth secret here in base64 encoded format NEXT_PUBLIC_API_KEY: QUl6YVN5RFRxSUxCRktZUjEzX2tkRkNrY0MwUmY0ODZ3c3QyQUww # Enter your API key here in base64 encoded format - MONGODB_URI: c2h1YmhhbUAxMjM0 # Enter your MongoDB URI here in base64 encoded format + MONGO_INITDB_ROOT_PASSWORD: c2h1YmhhbUAxMjM0 From f9774e32035711c48f44c4bb83b66778ccd7aa4f Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 21:22:53 +0530 Subject: [PATCH 09/18] Update configmap.yml --- kubernetes/configmap.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kubernetes/configmap.yml b/kubernetes/configmap.yml index 31eac25..7a0d468 100644 --- a/kubernetes/configmap.yml +++ b/kubernetes/configmap.yml @@ -4,7 +4,7 @@ metadata: name: gemini-config namespace: gemini-namespace data: - GOOGLE_ID: 103384355930-9umr0lckbbq19kg26e2pmiaausekm45d.apps.googleusercontent.com + GOOGLE_ID: 103384355930-outj5vptfg6lf5jc4kcfklhfa1sljuum.apps.googleusercontent.com MONGODB_URI: mongodb://mongodb-service:27017/gemini - NEXTAUTH_URL: https://3.250.193.188.nip.io + NEXTAUTH_URL: https://34.251.105.234.nip.io MONGO_INITDB_ROOT_USERNAME: admin From 065f1d1d3fac47977edea099eccd906e94fc050f Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 21:34:28 +0530 Subject: [PATCH 10/18] Update secrets.yml --- kubernetes/secrets.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml index bc1dde5..f3ad9f0 100644 --- a/kubernetes/secrets.yml +++ b/kubernetes/secrets.yml @@ -5,7 +5,7 @@ metadata: namespace: gemini-namespace type: Opaque data: - GOOGLE_SECRET: R09DU1BYLUNIbVN1Zk04U3lsUDlRNlRhazhKa1pvNVpOUzQ= # Enter your Google secret here in base64 encoded format - NEXTAUTH_SECRET: 7mkoYHM3xl2QZZVMrzvT+gkSIxWUgbhNNkVc2nxkk2g= # Enter your NextAuth secret here in base64 encoded format - NEXT_PUBLIC_API_KEY: QUl6YVN5RFRxSUxCRktZUjEzX2tkRkNrY0MwUmY0ODZ3c3QyQUww # Enter your API key here in base64 encoded format + GOOGLE_SECRET: R09DU1BYLXhtMGNvLUZFbEtuV0JhYzgybVpQUzVqUG9ZdFc= # Enter your Google secret here in base64 encoded format + NEXTAUTH_SECRET: p2aQyMyvv4EQifX4i3GkAYRypTszDHxHE0aZr8GiHzg # Enter your NextAuth secret here in base64 encoded format + NEXT_PUBLIC_API_KEY: QUl6YVN5QmFqRG83LU9wNVB4UHRJQWVHbS1POVZOMVpxWktONzNV # Enter your API key here in base64 encoded format MONGO_INITDB_ROOT_PASSWORD: c2h1YmhhbUAxMjM0 From 7af1074d92e72c9fc010650409d4e52416b8cea0 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 22:37:04 +0530 Subject: [PATCH 11/18] Update gemini-ingress.yml --- kubernetes/gemini-ingress.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kubernetes/gemini-ingress.yml b/kubernetes/gemini-ingress.yml index 5e8fefb..adcd99a 100644 --- a/kubernetes/gemini-ingress.yml +++ b/kubernetes/gemini-ingress.yml @@ -11,11 +11,11 @@ metadata: spec: tls: - hosts: - - geminiamitabh.letsdeployit.com + - geminishubh.34.251.105.234.nip.io secretName: gemini-tls-secret ingressClassName: nginx rules: - - host: "geminiamitabh.letsdeployit.com" + - host: "geminishubh.34.251.105.234.nip.io" http: paths: - path: / @@ -31,4 +31,4 @@ spec: service: name: nginx-service port: - number: 80 \ No newline at end of file + number: 80 From 59f940b1da209a3d470ab8cf8abd81a8c9b2642d Mon Sep 17 00:00:00 2001 From: AWS-DevOps-shubh Date: Sat, 10 May 2025 17:51:03 +0000 Subject: [PATCH 12/18] Update image tags to 16 and ensure correct domain [ci skip] --- kubernetes/gemini-ingress.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/gemini-ingress.yml b/kubernetes/gemini-ingress.yml index adcd99a..72a1bd1 100644 --- a/kubernetes/gemini-ingress.yml +++ b/kubernetes/gemini-ingress.yml @@ -15,7 +15,7 @@ spec: secretName: gemini-tls-secret ingressClassName: nginx rules: - - host: "geminishubh.34.251.105.234.nip.io" + - host: geminishubh.34.251.105.234.nip.io http: paths: - path: / From cca367a9fdaab753461f60394b8abbbf447f8e55 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sat, 10 May 2025 23:46:15 +0530 Subject: [PATCH 13/18] Update gemini-deployment.yml --- kubernetes/gemini-deployment.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kubernetes/gemini-deployment.yml b/kubernetes/gemini-deployment.yml index c6c9a7f..8f626f7 100644 --- a/kubernetes/gemini-deployment.yml +++ b/kubernetes/gemini-deployment.yml @@ -17,7 +17,7 @@ spec: spec: containers: - name: gemini - image: amitabhdevops/geminiprod:v1 + image: devshubh2204/geminiclonenip:latest ports: - containerPort: 3000 resources: @@ -57,4 +57,4 @@ spec: valueFrom: secretKeyRef: name: gemini-secret - key: NEXT_PUBLIC_API_KEY \ No newline at end of file + key: NEXT_PUBLIC_API_KEY From 748c8f8bcbbb911c7b50ae6eafeb9c23e255898d Mon Sep 17 00:00:00 2001 From: AWS-DevOps-shubh Date: Sat, 10 May 2025 18:19:21 +0000 Subject: [PATCH 14/18] Update image tags to 20 and ensure correct domain [ci skip] --- kubernetes/gemini-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/gemini-deployment.yml b/kubernetes/gemini-deployment.yml index 8f626f7..7c9692b 100644 --- a/kubernetes/gemini-deployment.yml +++ b/kubernetes/gemini-deployment.yml @@ -17,7 +17,7 @@ spec: spec: containers: - name: gemini - image: devshubh2204/geminiclonenip:latest + image: devshubh2204/geminiclonenip:20 ports: - containerPort: 3000 resources: From 0a4d7d9c2ba0d8f1802aab08019d956f2e22f6b3 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sun, 11 May 2025 00:44:21 +0530 Subject: [PATCH 15/18] Update cert-issuer.yml --- kubernetes/cert-issuer.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kubernetes/cert-issuer.yml b/kubernetes/cert-issuer.yml index 9a82d4f..beb19c4 100644 --- a/kubernetes/cert-issuer.yml +++ b/kubernetes/cert-issuer.yml @@ -8,7 +8,7 @@ spec: # The ACME server URL server: https://acme-v02.api.letsencrypt.org/directory # Email address used for ACME registration - email: # Replace with your email address + email: devshubh2204@gmail.com # Replace with your email address # Name of a secret used to store the ACME account private key privateKeySecretRef: name: letsencrypt-prod-key @@ -18,4 +18,4 @@ spec: ingress: class: nginx - \ No newline at end of file + From eb47553c620665c596eedc7c8f4d9a6d1d26d318 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sun, 11 May 2025 01:07:41 +0530 Subject: [PATCH 16/18] Update secrets.yml --- kubernetes/secrets.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml index f3ad9f0..6d56d03 100644 --- a/kubernetes/secrets.yml +++ b/kubernetes/secrets.yml @@ -5,7 +5,7 @@ metadata: namespace: gemini-namespace type: Opaque data: - GOOGLE_SECRET: R09DU1BYLXhtMGNvLUZFbEtuV0JhYzgybVpQUzVqUG9ZdFc= # Enter your Google secret here in base64 encoded format - NEXTAUTH_SECRET: p2aQyMyvv4EQifX4i3GkAYRypTszDHxHE0aZr8GiHzg # Enter your NextAuth secret here in base64 encoded format - NEXT_PUBLIC_API_KEY: QUl6YVN5QmFqRG83LU9wNVB4UHRJQWVHbS1POVZOMVpxWktONzNV # Enter your API key here in base64 encoded format - MONGO_INITDB_ROOT_PASSWORD: c2h1YmhhbUAxMjM0 + GOOGLE_SECRET:R09DU1BYLXhtMGNvLUZFbEtuV0JhYzgybVpQUzVqUG9ZdFc= + NEXTAUTH_SECRET:p2aQyMyvv4EQifX4i3GkAYRypTszDHxHE0aZr8GiHzg # Enter your NextAuth secret here in base64 encoded format + NEXT_PUBLIC_API_KEY:QUl6YVN5QmFqRG83LU9wNVB4UHRJQWVHbS1POVZOMVpxWktONzNV # Enter your API key here in base64 encoded format + MONGO_INITDB_ROOT_PASSWORD:c2h1YmhhbUAxMjM0 From a4da3f42cbb21107e9a22c6c3bf5144ca11d6687 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sun, 11 May 2025 01:10:16 +0530 Subject: [PATCH 17/18] Update configmap.yml --- kubernetes/configmap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/configmap.yml b/kubernetes/configmap.yml index 7a0d468..d4986b7 100644 --- a/kubernetes/configmap.yml +++ b/kubernetes/configmap.yml @@ -7,4 +7,4 @@ data: GOOGLE_ID: 103384355930-outj5vptfg6lf5jc4kcfklhfa1sljuum.apps.googleusercontent.com MONGODB_URI: mongodb://mongodb-service:27017/gemini NEXTAUTH_URL: https://34.251.105.234.nip.io - MONGO_INITDB_ROOT_USERNAME: admin + MONGO_INITDB_ROOT_USERNAME: YWRtaW4= From 79eea28f37c3814fee8d9fe7b1dc8721e0b547b2 Mon Sep 17 00:00:00 2001 From: Shubham Tayde Date: Sun, 11 May 2025 01:12:10 +0530 Subject: [PATCH 18/18] Update Jenkinsfile --- Jenkinsfile | 221 ++++++++++++++-------------------------------------- 1 file changed, 59 insertions(+), 162 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 038c483..21b1f15 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,184 +1,81 @@ -@Library('Shared')_ +@Library('shared') _ pipeline { - agent { label 'dev-server' } - + agent any + environment { - SONAR_HOME = tool "Sonar" - DOCKER_IMAGE = "geminiamit" - GIT_REPO = "https://github.com/Amitabh-DevOps/dev-gemini-clone.git" - GIT_BRANCH = "DevOps" - DOCKERHUB_USERNAME = "amitabhdevops" - DOCKER_IMAGE_NAME = "${DOCKERHUB_USERNAME}/${DOCKER_IMAGE}" - } - parameters { - string(name: 'GEMINI_DOCKER_TAG', defaultValue: 'v1', description: 'Setting docker image for latest push') + DOCKER_IMAGE_NAME = 'devshubh2204/geminiclonenip' + DOCKER_IMAGE_TAG = "${BUILD_NUMBER}" + GITHUB_CREDENTIALS = credentials('git-hub-cred') + GIT_BRANCH = "dev-shubh" } + stages { - stage("Clean Workspace") { - steps { - cleanWs() - } - } - stage("Code") { - steps { - // Use GIT_REPO and GIT_BRANCH from environment variables - clone("${GIT_REPO}", "${GIT_BRANCH}") - echo "Code cloning done from ${GIT_REPO} branch ${GIT_BRANCH}." - } - } - stage("Prepare Environment File") { - steps { - prepareEnvFile('.env.local', '.env.local') - } - } - stage("Build") { - steps { - dockerbuild("${DOCKER_IMAGE}", "${params.GEMINI_DOCKER_TAG}") - echo "Docker image ${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG} built successfully." - } - } - stage("SonarQube Quality Analysis") { - steps { - sonarqube_analysis('Sonar', "${DOCKER_IMAGE}", "${DOCKER_IMAGE}") - } - } - stage("OWASP : Dependency Check") { + stage('Cleanup Workspace') { steps { - owasp_dependency() + script { + clean_ws() + } } } - stage("Sonar Quality Gate Scan") { + + stage('Clone Repository') { steps { - sonarqube_code_quality() + script { + clone("https://github.com/AWS-DevOps-shubh/dev-gemini-clone.git", "dev-shubh") + } } } - stage("Docker Image Security Scan (Trivy)") { - steps { - dockerScanTrivy("${DOCKER_IMAGE}", "${params.GEMINI_DOCKER_TAG}") - echo "Trivy scan completed for ${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG}." + + stage('Build and Scan Docker Image') { + parallel { + stage('Build Main App Image') { + steps { + script { + docker_build( + imageName: env.DOCKER_IMAGE_NAME, + imageTag: env.DOCKER_IMAGE_TAG, + dockerfile: 'Dockerfile', + context: '.' + ) + } + } + } + + stage('Security Scan with Trivy') { + steps { + script { + trivy() + } + } + } } } - stage("Push to DockerHub") { + + stage('Push Docker Images') { steps { - dockerpush("dockerHub", "${DOCKER_IMAGE}", "${params.GEMINI_DOCKER_TAG}") - echo "Pushed ${DOCKERHUB_USERNAME}/${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG} to DockerHub." + script { + docker_push( + imageName: env.DOCKER_IMAGE_NAME, + imageTag: env.DOCKER_IMAGE_TAG, + credentials: 'docker-hub-cred' + ) + } } } - // Uncommented and updated the "Run Container" stage to use environment variables - // stage("Run Container") { - // steps { - // dockerRunApp("${DOCKER_IMAGE}", "${params.GEMINI_DOCKER_TAG}", "env_local", "${DOCKER_IMAGE}", "--env-file .env.local -p 3000:3000") - // echo "Container started using ${DOCKER_IMAGE}:${DOCKER_TAG} with container name '${DOCKER_IMAGE}'." - // } - // } - stage("Cleanup Docker Images") { + + stage('Update Kubernetes Manifests') { steps { script { - sh "docker rmi ${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG} || true" - sh "docker rmi ${DOCKERHUB_USERNAME}/${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG} || true" - sh "docker image prune -f" + updatek8s( + imageTag: env.DOCKER_IMAGE_TAG, + manifestsPath: 'kubernetes', + gitCredentials: 'git-hub-cred', + gitUserName: 'AWS-DevOps-shubh', + gitUserEmail: 'devshubh2204@gmail.com', + ) } - echo "Cleaned up Docker image: ${DOCKERHUB_USERNAME}/${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG}." } } } - post { - success { - archiveArtifacts artifacts: 'kubernetes/gemini-deployment.yml', followSymlinks: false - build job: "Gemini-CD", parameters: [ - string(name: 'GEMINI_DOCKER_TAG', value: "${params.GEMINI_DOCKER_TAG}") - ] - echo "Pipeline completed successfully!" - emailext ( - subject: "SUCCESS: Jenkins Pipeline for ${DOCKER_IMAGE}", - body: """ -
-

🎉 Pipeline Execution: SUCCESS 🎉

-

- Hello Team, -

-

- The Jenkins CI pipeline for ${DOCKER_IMAGE} completed successfully! -

- - - - - - - - - - - - - - - - - -
DetailsValues
Git Repository${GIT_REPO}
Branch${GIT_BRANCH}
Docker Image${DOCKERHUB_USERNAME}/${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG}
-

- Visit Pipeline Logs for more details. -

-

- Thanks,
- Jenkins -

-
- """, - to: "amitabhdevops2024@gmail.com", - from: "jenkins@example.com", - mimeType: 'text/html', - attachmentsPattern: '**/table-report.html' - ) - } - failure { - echo "Pipeline failed. Please check the logs." - emailext ( - subject: "FAILURE: Jenkins Pipeline for ${DOCKER_IMAGE}", - body: """ -
-

🚨 Pipeline Execution: FAILURE 🚨

-

- Hello Team, -

-

- Unfortunately, the Jenkins CI pipeline for ${DOCKER_IMAGE} has failed. -

- - - - - - - - - - - - - - - - - -
DetailsValues
Git Repository${GIT_REPO}
Branch${GIT_BRANCH}
Docker Image${DOCKERHUB_USERNAME}/${DOCKER_IMAGE}:${params.GEMINI_DOCKER_TAG}
-

- Visit Pipeline Logs for more details. -

-

- Thanks,
- Jenkins -

-
- """, - to: "amitabhdevops2024@gmail.com", - from: "jenkins@example.com", - mimeType: 'text/html', - attachmentsPattern: '**/table-report.html' - ) - } - } -} \ No newline at end of file +}