Jenkins Pipeline steps
🛠️ Prerequisites
- Ensure you have Docker, Jenkins (admin), SonarQube (Community or custom), Git, and required ports (9000) open.
Details
- Analyze code quality for different branches using SonarQube Community Edition:
- Detect bugs, code smells, security issues per branch
- Ensure quality before merging
- Generate reports for developers/reviewers
🚀 Step 1: Docker & SonarQube
docker pull sonarqube:community
docker run -d --name sonarqube -p 9000:9000 sonarqube:community- Access: http://localhost:9000, install plugins if needed
🔧 Step 2: Jenkins Plugins
- Install via Jenkins: SonarQube Scanner & Eclipse Temurin Installer
Path: Manage Jenkins → Manage Plugins → Available
⚙️ Step 3: Configure Tools in Jenkins
- JDK: Manage Jenkins → Global Tool Configuration → JDK → Add Eclipse Temurin
- SonarQube Scanner: Manage Jenkins → Global Tool Configuration → SonarQube Scanner → Add scanner
🔑 Step 4: Generate SonarQube Token
- SonarQube → My Account → Security → Generate Token → Copy for Jenkins
🌐 Step 5: Configure SonarQube Server in Jenkins
- Manage Jenkins → Configure System → SonarQube Servers → Add:
Name: SonarQube
URL: http://<sonarqube-server>:9000
Token: Paste token
Test connection📜 Step 6: Jenkins Pipeline
pipeline {
agent any
tools {
maven 'maven3'
jdk 'jdk17'
}
environment {
SCANNER_HOME = tool 'sonar-scanner'
}
stages {
stage('Git Checkout') {
steps {
git branch: 'dev', url: 'https://github.com/Ank911007/FullStack-Blogging-App-.git'
}
}
stage('Compile') {
steps {
script {
if (isUnix()) {
sh 'mvn compile'
} else {
bat 'mvn compile'
}
}
}
}
stage('Test') {
steps {
script {
if (isUnix()) {
sh 'mvn test'
} else {
bat 'mvn test'
}
}
}
}
stage('SonarQube Analysis') {
steps {
withSonarQubeEnv('sonar-server') {
script {
if (isUnix()) {
sh "${SCANNER_HOME}/bin/sonar-scanner -Dsonar.projectName=bloggingApp -Dsonar.projectKey=bloggingApp -Dsonar.java.binaries=target -Dsonar.branch.name=dev"
} else {
bat "\"%SCANNER_HOME%\\bin\\sonar-scanner.bat\" -Dsonar.projectName=bloggingApp -Dsonar.projectKey=bloggingApp -Dsonar.java.binaries=target -Dsonar.branch.name=dev"
}
}
}
}
}
stage('Quality Gate Check') {
steps {
timeout(time: 1, unit: 'HOURS') {
waitForQualityGate abortPipeline: false
}
}
}
}
}🏗️ Step 7: Run Job & Review
- Save and run Jenkins job