DEV Community

Srinivasaraju Tangella
Srinivasaraju Tangella

Posted on

AI-Powered Enterprise CI/CD Pipeline: Jenkins + OpenAI + SonarQube + Nexus + Docker + Kubernetes + Helm

Key DevOps Concepts Implemented

CI (Continuous Integration)

• Automated build
• Automated testing

CD (Continuous Delivery)
• Automated packaging
• Automated deployment

Quality Gate
• Prevents bad code deployment

Containerization
• Docker image creation

Orchestration
• Kubernetes deployment

Complete Enterprise Architecture Flow

Developer

GitHub

Jenkins

Build

Test

SonarQube

AI Analysis (OpenAI)

AI Risk Decision

Nexus

Docker

DockerHub

Helm

Kubernetes

Production

Pipeline Execution Flow Explanation

Stage 1 — Checkout

Pulls code from GitHub

Stage 2 — Build

Compiles application

Stage 3 — Test

Runs unit tests

Stage 4 — Quality Gate

Validates code quality
Stops pipeline if quality is poor

Stage 5 — Package

Creates JAR file

Stage 6 — Docker Build

Creates container image

Stage 7 — Push Image

Uploads image to registry

Stage 8 — Deploy

Updates Kubernetes deployment

Stage 9 — Verify

Ensures deployment success

Step 1: Install Required Tools

On Jenkins Server:
Install:
Java 17
Maven
Docker
Kubectl
Helm
SonarQube Scanner

Install Jenkins Plugins:

Pipeline
Docker Pipeline
Kubernetes
SonarQube Scanner
Nexus Artifact Uploader
Git
JUnit

Step 2: Configure SonarQube in Jenkins

Manage Jenkins → Configure System → SonarQube Servers
Add:

Name: SonarQube
URL: http://your-sonarqube:9000
Token: ********

Step 3: Configure Nexus in Jenkins

Add credentials:
Username
Password
Credentials ID:
nexus-creds

Step 4: Configure DockerHub Credentials

Add credentials:

ID: dockerhub-creds

Step 5: Production-Grade Jenkinsfile

pipeline {

agent any

tools {
maven "M2_HOME"
}

environment {

DOCKER_IMAGE = "yourdockerhub/spring-petclinic"
DOCKER_TAG = "${BUILD_NUMBER}"

SONARQUBE_SERVER = "SonarQube"

OPENAI_API_KEY = credentials('openai-api-key')

}

stages {

stage('Checkout') {

steps {

git branch: 'main',
url: 'https://github.com/spring-projects/spring-petclinic.git'

}

}

stage('Build') {

steps {

sh 'mvn clean compile'

}

}

stage('Unit Test') {

steps {

sh 'mvn test'

}

}

stage('Publish Test Results') {

steps {

junit '*/target/surefire-reports/.xml'

}

}

stage('SonarQube Analysis') {

steps {

withSonarQubeEnv("${SONARQUBE_SERVER}") {

sh '''
mvn sonar:sonar \
-Dsonar.projectKey=petclinic \
-Dsonar.host.url=http://sonarqube:9000
'''

}

}

}

stage('Quality Gate') {

steps {

timeout(time: 5, unit: 'MINUTES') {

waitForQualityGate abortPipeline: true

}

}

}

stage('AI Log Analysis') {

steps {

script {

def logs = sh(
script: "cat target/surefire-reports/*.txt || echo 'No logs'",
returnStdout: true
)

def aiResponse = sh(
script: """
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer ${OPENAI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model":"gpt-4o-mini",
"messages":[
{
"role":"user",
"content":"Analyze these Jenkins test logs and predict deployment risk:\n${logs}"
}
]
}'
""",
returnStdout: true
)

echo "AI Analysis Result: ${aiResponse}"

if(aiResponse.contains("HIGH RISK")) {

error "AI detected high deployment risk. Stopping pipeline."

}

}

}

}

stage('Package') {

steps {

sh 'mvn package -DskipTests'

}

}

stage('Upload Artifact to Nexus') {

steps {

nexusArtifactUploader(

nexusVersion: 'nexus3',

protocol: 'http',

nexusUrl: 'nexus:8081',

groupId: 'com.petclinic',

version: "${BUILD_NUMBER}",

repository: 'maven-releases',

credentialsId: 'nexus-creds',

artifacts: [

[
artifactId: 'petclinic',
classifier: '',
file: 'target/*.jar',
type: 'jar'
]

]

)

}

}

stage('Build Docker Image') {

steps {

sh "docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} ."

}

}

stage('Push Docker Image') {

steps {

withCredentials([usernamePassword(

credentialsId: 'dockerhub-creds',

usernameVariable: 'USER',

passwordVariable: 'PASS'

)]) {

sh "echo $PASS | docker login -u $USER --password-stdin"

sh "docker push ${DOCKER_IMAGE}:${DOCKER_TAG}"

}

}

}

stage('Deploy using Helm') {

steps {

sh """

helm upgrade --install petclinic ./helm-chart \
--set image.repository=${DOCKER_IMAGE} \
--set image.tag=${DOCKER_TAG}

"""

}

}

stage('Verify Deployment') {

steps {

sh "kubectl get pods"

sh "kubectl rollout status deployment/petclinic"

}

}

}

post {

success {

echo "AI-Powered Deployment Successful"

}

failure {

echo "Pipeline Failed or Blocked by AI"

}

}

}

How AI Helps in This Pipeline

AI analyzes:

Test logs
Build failures
Code patterns
Deployment risks

AI decides:

SAFE → Continue deployment
HIGH RISK → Stop deployment

Example AI Output
Analysis Result:

Tests passed successfully.
No critical errors detected.
Deployment risk LOW.

Recommendation: SAFE TO DEPLOY
OR
Analysis Result:
Memory leak detected.
High failure probability.

Recommendation: HIGH RISK
Pipeline stops automatically.

Step 6: Helm Chart Structure

helm-chart/

Chart.yaml
values.yaml
templates/

deployment.yaml
service.yaml
deployment.yaml

apiVersion: apps/v1
kind: Deployment

metadata:
name: petclinic

spec:
replicas: 2

selector:
matchLabels:
app: petclinic

template:
metadata:
labels:
app: petclinic

spec:
  containers:

  - name: petclinic

    image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

    ports:
    - containerPort: 8080
Enter fullscreen mode Exit fullscreen mode

values.yaml

image:
repository: yourdockerhub/spring-petclinic
tag: latest

Step 7: Nexus Stores Artifacts

Flow:

Jenkins → Nexus → Artifact stored

Benefits:

Version control
Rollback capability
Artifact history

Step 8: SonarQube Quality Gate Protects Production

SonarQube checks:
• Bugs
• Vulnerabilities
• Code smells
• Coverage
If failed:
Pipeline stops.

Step 9: Docker Containerization

Create Dockerfile in project root:

FROM openjdk:17

WORKDIR /app

COPY target/*.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","app.jar"]

Converts app into portable container.
Runs anywhere:
AWS Azure GCP On-prem

Step 10: Kubernetes Deployment

Kubernetes handles:
Scaling
Load balancing
Self healing

Step 11: Final Enterprise

Final Production Pipeline Flow

GitHub

Jenkins

Build

Test

SonarQube

Quality Gate

Nexus

Docker

DockerHub

Helm

Kubernetes

Production

Enterprise Benefits

Prevents bad deployments
Fully automated
Highly scalable
Highly reliable
Rollback supported
Production safe

Top comments (0)