Search

csr

pipeline { agent any environment { //조직별 반드시 변경 해야 하는 부분 PROJECT = "csr" GIT_URL = "http://gitlab.paas.smes-tipa.go.kr/csr/csr.git" GIT_CREDENTIALS_ID = "csr-normal-cred" ARTIFACTORY_CREDENTIAL_ID = "csr-normal-cred" ARTIFACTORY_PATH = "csr-maven-dev" SONARQUBE_TOKEN_ID = "csr-sonarqube-token" PAASTA_CREDENTIAL_ID = "csr-normal-cred" CF_ORG_NAME = "중소벤처24시스템_운영" CF_SPACE_NAME = "사회적책임경영시스템" //오류시 변경 해야 하는 부분 ARTIFACTS = "target/*.war" JUNIT_REPORT = "**/target/surefire-reports/TEST-*.xml" CF_API_URL = "https://api.paas.smes-tipa.go.kr" CF_MANIFEST = "manifest.yml" CF_SUBDOMAIN = "csr-dev" CF_DOMAIN = "paas.smes-tipa.go.kr" //기타 BRANCH = "master" TAG = "0" LAST_NUMBER = "0" } options { disableConcurrentBuilds() buildDiscarder(logRotator(numToKeepStr: "30", artifactNumToKeepStr: "30")) timeout(time: 120, unit: 'MINUTES') } tools { jdk "OpenJDK1.8" maven "maven 3.6.3" gradle "Gradle6.5" } stages { //stage ('00-Start Alert') { // steps { // send build started notifications //slackSend (color: '#FFFF00', message: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") // send to HipChat //hipchatSend (color: 'YELLOW', notify: true, message: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") // send to email //emailext (to: "cloudinfra@in-soft.co.kr", subject: "시작: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", body: """시작: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]': //Check console output at ${env.BUILD_URL}${env.JOB_NAME} [${env.BUILD_NUMBER}]""", //recipientProviders: [[$class: 'DevelopersRecipientProvider']]) // } // stage("01-Checkout") { steps { git credentialsId: "${GIT_CREDENTIALS_ID}", url: "${GIT_URL}", branch: "${BRANCH}", poll: true, changelog: true } } stage("02-Maven build") { steps { echo '02-Maven build ..' sh 'mvn clean verify -DskipITs=false'; junit "${JUNIT_REPORT}" archive "${ARTIFACTS}" } } stage("03-Static Code Analysis") { steps { echo '03-Static Code Analysis..' script { withSonarQubeEnv(credentialsId: "${SONARQUBE_TOKEN_ID}", installationName: 'sonarcube8.3.1') { sh 'mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar -Dsonar.host.url=http://sonarqube.paas.smes-tipa.go.kr:9000 -Dsonar.projectName=${PROJECT} -Dsonar.projectKey=${PROJECT}' } } } } stage("04-Code Quality Gate") { steps { script { def qualitygate = waitForQualityGate(abortPipeline: true, webhookSecretId: 'jenkin-sonarqube-webhook') if (qualitygate.status != "OK") { error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}" } } } } stage('05-Upload to Artifactory') { steps { echo '05-Upload to Artifactory..' script { def server = Artifactory.newServer url: "http://artifactory.paas.smes-tipa.go.kr:8082/artifactory", credentialsId: "${ARTIFACTORY_CREDENTIAL_ID}" def uploadSpec = """{ "files": [ { "pattern": "${ARTIFACTS}", "target": "${ARTIFACTORY_PATH}/${PROJECT}-${BUILD_NUMBER}/", "props": "Integration-Tested=Yes;Performance-Tested=No" } ] }""" server.upload(uploadSpec) } } } stage('06-CF app deploy') { steps { echo '06-CF app deploy..' script { withCredentials([usernamePassword(credentialsId: "${PAASTA_CREDENTIAL_ID}", passwordVariable: 'passta_password', usernameVariable: 'passta_username')]) { def lastSuccessfulBuildID = 0 def build = currentBuild.previousBuild while (build != null) { if (build.result == "SUCCESS") { lastSuccessfulBuildID = build.id //as Integer break } build = build.previousBuild } //sh "cf login -a ${CF_API_URL} -u ${passta_username} -p ${passta_password} -o ${CF_ORG_NAME} -s ${CF_SPACE_NAME} --skip-ssl-validation" //sh "cf push ${PROJECT}${BUILD_NUMBER} -f ${CF_MANIFEST}" //sh "cf delete-route -f ${CF_DOMAIN} --hostname ${CF_SUBDOMAIN}" //sh "cf map-route ${PROJECT}${BUILD_NUMBER} ${CF_DOMAIN} --hostname ${CF_SUBDOMAIN}" //sh "cf unmap-route ${PROJECT}${lastSuccessfulBuildID} ${CF_DOMAIN} --hostname ${CF_SUBDOMAIN}" //sh "cf logout" } } } } } //post { // success { //slackSend (color: '#00FF00', message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") //hipchatSend (color: 'GREEN', notify: true, message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") //emailext (to: "cloudinfra@in-soft.co.kr", subject: "성공: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", body: """성공: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]': //Check console output at ${env.BUILD_URL}${env.JOB_NAME} [${env.BUILD_NUMBER}]""", recipientProviders: [[$class: 'DevelopersRecipientProvider']]) // } // failure { //slackSend (color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") //hipchatSend (color: 'RED', notify: true, message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") //emailext (to: "cloudinfra@in-soft.co.kr", subject: "실패: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", body: """실패: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]': //Check console output at ${env.BUILD_URL}${env.JOB_NAME} [${env.BUILD_NUMBER}]""", recipientProviders: [[$class: 'DevelopersRecipientProvider']]) // } //} }
Shell
복사