Static Code Analysis Tools
- Analysis tools can try to suggest best practices in key areas
- Architecture and Design
- Comments
- Coding Rules
- Potential Bugs
- Duplications
- Unit Tests
- Complexity
- Sonar Qube is an open platform for managing code quality
- There are multiple versions of sonar qube and we will be using the community edition

- The latest version of the sonarqube can be downloaded from here Refer Here
- Sonar Qube requirements: Refer Here
- For installing jdk 11 and postgres Refer Here
- After installing and changing the password of the sonarqube generate the token

- Lets configure Sonarqube with Jenkins Refer Here
- Refer Here for the sonar qube pipeline configuration.
- The pipeline we have configured is
pipeline {
agent { label 'JDK11' }
options {
timeout(time: 1, unit: 'HOURS')
retry(2)
}
triggers {
cron('0 * * * *')
}
parameters {
choice(name: 'GOAL', choices: ['compile', 'package', 'clean package'])
}
stages {
stage('Source Code') {
steps {
git url: 'https://github.com/GitPracticeRepo/spring-petclinic.git',
branch: 'main'
}
}
stage('Build the Code and sonarqube-analysis') {
steps {
withSonarQubeEnv('SONAR_LATEST') {
sh script: "mvn ${params.GOAL} sonar:sonar"
}
}
}
stage('reporting') {
steps {
junit testResults: 'target/surefire-reports/*.xml'
}
}
}
}
- Now lets do sonarqube analysis for openmrs-core
pipeline {
agent { label 'JDK11' }
options {
timeout(time: 1, unit: 'HOURS')
retry(2)
}
triggers {
cron('0 * * * *')
}
stages {
stage('Source Code') {
steps {
git url: 'https://github.com/GitPracticeRepo/openmrs-core.git',
branch: 'master'
}
}
stage('Build the Code and sonarqube-analysis') {
steps {
withSonarQubeEnv('SONAR_LATEST') {
sh script: "mvn package sonar:sonar"
}
}
}
stage('reporting') {
steps {
junit testResults: '**/surefire-reports/*.xml'
}
}
}
}
- If you want build to be failed when the code analysis shows errors, we can configure Quality Gate.
- A Quality Gate can be created as per organizational standards

- Added wait for quality gate
pipeline {
agent { label 'JDK11' }
options {
timeout(time: 1, unit: 'HOURS')
retry(2)
}
triggers {
cron('0 * * * *')
}
parameters {
choice(name: 'GOAL', choices: ['compile', 'package', 'clean package'])
}
stages {
stage('Source Code') {
steps {
git url: 'https://github.com/GitPracticeRepo/spring-petclinic.git',
branch: 'main'
}
}
stage('Build the Code and sonarqube-analysis') {
steps {
withSonarQubeEnv('SONAR_LATEST') {
sh script: "mvn ${params.GOAL} sonar:sonar"
}
// stash name: 'spc-build-jar', includes: 'target/*.jar'
}
}
stage('reporting') {
steps {
junit testResults: 'target/surefire-reports/*.xml'
}
}
stage("Quality Gate") {
steps {
timeout(time: 1, unit: 'HOURS') {
waitForQualityGate abortPipeline: true
}
}
}
}
// post {
// success {
// // send the success email
// echo "Success"
// mail bcc: '', body: "BUILD URL: ${BUILD_URL} TEST RESULTS ${RUN_TESTS_DISPLAY_URL} ", cc: '', from: 'devops@qtdevops.com', replyTo: '',
// subject: "${JOB_BASE_NAME}: Build ${BUILD_ID} Succeded", to: 'qtdevops@gmail.com'
// }
// unsuccessful {
// //send the unsuccess email
// mail bcc: '', body: "BUILD URL: ${BUILD_URL} TEST RESULTS ${RUN_TESTS_DISPLAY_URL} ", cc: '', from: 'devops@qtdevops.com', replyTo: '',
// subject: "${JOB_BASE_NAME}: Build ${BUILD_ID} Failed", to: 'qtdevops@gmail.com'
// }
// }
}

Jfrog/Artifactory installation
- Refer Here for the artifactory download
- debian/ubuntu
# To determine your distribution, run lsb_release -c or cat /etc/os-release
# Example:echo "deb https://releases.jfrog.io/artifactory/artifactory-pro-debs xenial main" | sudo tee -a /etc/apt/sources.list;
wget -qO - https://releases.jfrog.io/artifactory/api/gpg/key/public | sudo apt-key add -;
echo "deb https://releases.jfrog.io/artifactory/artifactory-debs {distribution} main" | sudo tee -a /etc/apt/sources.list;
sudo apt-get update && sudo apt-get install jfrog-artifactory-oss
wget https://releases.jfrog.io/artifactory/artifactory-rpms/artifactory-rpms.repo -O jfrog-artifactory-rpms.repo;
sudo mv jfrog-artifactory-rpms.repo /etc/yum.repos.d/;
sudo yum update && sudo yum install jfrog-artifactory-oss
-
If you install the default credentials are admin/password
-
Try to use artifactory as a free cloud version Refer Here
Like this:
Like Loading...