1.Dockerfile
sonarDockerfile: (基础slave镜像参考上篇博文)
1FROM registry.it.com/openshift/jenkins-slave:latest 2 3#tool maven 4ADD apache-maven-3.5.0.tar.gz /usr/local/ 5 6#tool sonar 7ADD sonar-scanner.tar.gz /usr/local/
2.Jenkinsfile
1def label = "mypod-${UUID.randomUUID().toString()}" 2 3//代码扫描 4def SonarScan(projectType,skipSonar,srcDir,serviceName){ 5 def scanHome = "/usr/local/sonar-scanner" 6 if (projectType == 'java'){ 7 if ("${buildType}" == 'gradle'){ 8 codepath = 'build/classes' 9 } else{ 10 codepath = 'target/classes' 11 } 12 try { 13 sh """ 14 cd ${srcDir} 15 ${scanHome}/bin/sonar-scanner -Dsonar.projectName=${serviceName} -Dsonar.projectKey=${serviceName} \ 16 -Dsonar.sources=src/main -Dsonar.tests=src/test -Dsonar.language=java -Dsonar.sourceEncoding=UTF-8 \ 17 -Dsonar.java.binaries=${codepath} -Dsonar.java.coveragePlugin=jacoco \ 18 -Dsonar.jacoco.reportPath=target/jacoco.exec -Dsonar.junit.reportsPath=target/surefire-reports \ 19 -Dsonar.surefire.reportsPath=target/surefire-reports -Dsonar.projectDescription='devopsdevops' 20 """ 21 } catch (e){ 22 currentBuild.description="代码扫描失败!" 23 error '代码扫描失败!' 24 } 25 } 26} 27 28//docker 29podTemplate( 30 label: label, 31 cloud: 'kubernetes', 32 containers: [ 33 containerTemplate( 34 name: 'jnlp', 35 image: 'registry.it.com/openshift/slave-maven-sonar-jdk8u111:latest', 36 ttyEnabled: true, 37 privileged: false, 38 alwaysPullImage: true, 39 args: '${computer.jnlpmac} ${computer.name}', 40 resourceRequestCpu: '8000m', 41 resourceLimitCpu: '8000m', 42 resourceRequestMemory: '16Gi', 43 resourceLimitMemory: '16Gi', 44 envVars: [ 45 envVar(key: 'PATH', value: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/apache-maven-3.5.0/bin'), 46 envVar(key: 'CLASS_PATH', value: '/docker-java-home/jre/lib/rt.jar:/docker-java-home/jre/lib/dt.jar:/docker-java-home/jre/lib/tools.jar')] 47 ) 48 ], 49 volumes: [persistentVolumeClaim(mountPath: '/etc/data/', claimName: 'jenkins')], 50 //idleMinutes: '60', 51 //activeDeadlineSeconds: '60', 52 slaveConnectTimeout: '60' 53 ){ 54 node(label) { 55 ws("${workspace}"){ 56 stage('GetCode'){ 57 ....... 58 } 59 60 stage('Build'){ 61 62 ....... 63 } 64 65 stage('CodeScan'){ 66 SonarScan('java',skipSonar,srcDir,serviceName) 67 } 68 69 } 70 } 71}
本文同步分享在 博客“MASCOT”(CNBlog)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。