1. Jenkins Configure Global Security 구성
2. Jenkins Pipeline 으로 새로운 Item 등록
3. GitLab에 등록되어 파이프라인에 구동할 Maven git-jenkins-sonar 파일 설정
properties([gitLabConnection('KSTiGitlab'), buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '30', numToKeepStr: '30'))])
def jobname=env.JOB_BASE_NAME
node {
stage ('Clone') {
git url: 'https://m1-dev-gitlab.xxxxxxxx/xxxxxx/poi.git', branch: 'master', credentialsId: 'kim.yhee'
}
stage ('Artifacts Build') {
mvnHome = tool '3.6.2'
def mvn_cli = """
${mvnHome}/bin/mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.skip=false --batch-mode -V -U -e
checkstyle:checkstyle pmd:pmd pmd:cpd findbugs:findbugs
"""
sh mvn_cli.replaceAll('\n', ' ')
}
stage('Code Style Analysis') {
def checkstyle = scanForIssues tool: [$class: 'CheckStyle'], pattern: '**/target/checkstyle-result.xml'
publishIssues issues:[checkstyle]
def pmd = scanForIssues tool: [$class: 'Pmd'], pattern: '**/target/pmd.xml'
publishIssues issues:[pmd]
def cpd = scanForIssues tool: [$class: 'Cpd'], pattern: '**/target/cpd.xml'
publishIssues issues:[cpd]
def findbugs = scanForIssues tool: [$class: 'FindBugs'], pattern: '**/target/findbugsXml.xml'
publishIssues issues:[findbugs]
def maven = scanForIssues tool: [$class: 'MavenConsole']
publishIssues issues:[maven]
publishIssues id:'analysis', name:'White Mountains Issues',
issues:[checkstyle, pmd, findbugs],
filters:[includePackage('io.jenkins.plugins.analysis.*')]
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
}
stage('Sonarqube') {
def scannerHome = tool 'KSTiSonarScanner';
withSonarQubeEnv('KSTiSonarQube') {
def sonar_cli = """
${scannerHome}/bin/sonar-scanner
-Dsonar.projectKey=poi
-Dsonar.projectName=poi
-Dsonar.projectVersion=1.0.0
-Dsonar.sources='src'
-Dsonar.java.libraries=target/*.jar
-Dsonar.java.binaries=target/classes
-Dsonar.junit.reportsPath=target/surefire-reports
-Dsonar.cobertura.reportPath=target/site/cobertura/coverage.xml
-Dsonar.dynamicAnalysis=reuseReports
-Dsonar.java.coveragePlugin=plugin
"""
sh sonar_cli.replaceAll('\n', ' ')
}
}
stage ('Send Result Message'){
sh "curl -i -X POST -H 'Content-Type: application/json' -d '{\"channel\": \"@Jenkins\",\"text\": \"Jenkins Job **_'${jobname}'_** is Success!:tada:\"}' https://macaronmsg.duckdns.org/hooks/wg7og7urkjyzugh38igjtnac8h"
}
}
Jenkins관리 Jenkins Global Tool Configuration의 SonarQube Scanner에 등록된 명칭(def scannerHome = tool 'KSTiSonarScanner'; )과 Maven Name과 일치(mvnHome = tool '3.6.2' )하고 Jenkins관리 시스템 설정의 SonarQube servers의 Name(KSTiSonarQube)과 일치한다
4. GitLab에 등록되어 파이프라인에 구동할 Gradle git-jenkins-sonar 파일 설정
properties([gitLabConnection('KSTiGitlab'), buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '30', numToKeepStr: '30'))])
def jobname=env.JOB_BASE_NAME
node {
stage ('Clone') {
git url: 'https://m1-dev-gitlab.xxxxxxxx/xxxxxxxx/sbs.git', branch: 'master', credentialsId: 'kim.yhee'
}
stage ('Artifacts Build') {
def gradle_cli = """
/var/lib/jenkins/workspace/sbs/gradlew clean build
"""
sh gradle_cli.replaceAll('\n', ' ')
}
stage('Sonarqube') {
def scannerHome = tool 'KSTiSonarScanner';
withSonarQubeEnv('KSTiSonarQube') {
def sonar_cli = """
${scannerHome}/bin/sonar-scanner
-Dsonar.projectKey=sbs
-Dsonar.projectName=sbs
-Dsonar.projectVersion=1.0.0
-Dsonar.sources='src'
-Dsonar.java.binaries=build/classes
-Dsonar.junit.reportsPath=build/surefire-reports
-Dsonar.cobertura.reportPath=build/site/cobertura/coverage.xml
-Dsonar.dynamicAnalysis=reuseReports
-Dsonar.java.coveragePlugin=plugin
"""
sh sonar_cli.replaceAll('\n', ' ')
}
}
stage ('Send Result Message'){
sh "curl -i -X POST -H 'Content-Type: application/json' -d '{\"channel\": \"@Jenkins\",\"text\": \"Jenkins Job **_'${jobname}'_** is Success!:tada:\"}' https://macaronmsg.duckdns.org/hooks/wg7og7urkjyzugh38igjtnac8h"
}
}
'현재' 카테고리의 다른 글
Eclipse에서 PMD와 SpotBugs 사용하기 (0) | 2019.12.20 |
---|---|
Android Studio에서 Sonarlint 사용 (0) | 2019.12.18 |
AGJS 활용 (6-Jenkins Maven & Gradle project 등록) (0) | 2019.11.29 |
AGJS 활용 (5-Jenkins Job 등록 관련 기본환경 설정) (0) | 2019.11.29 |
AGJS 활용 (4-Jenkins 설치 및 설정) (0) | 2019.11.29 |