前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >中篇: 持续集成 &代码质量平台(二)

中篇: 持续集成 &代码质量平台(二)

作者头像
DevOps云学堂
发布2020-02-19 13:22:18
8470
发布2020-02-19 13:22:18
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

引导 您好,本章主要我们主要学习与质量管理平台Sonarqube集成。主要包含以下内容:1. 项目分析 2. 自动化分析 适合人群: 所有对DevOps感兴趣的同学。

1. 项目分析

安装配置sonarscanner

下载地址:

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

代码语言:javascript
复制
tar zxf sonar-scanner-xxxx.tar.gz -C /usr/local

vim /etc/profile

export SCANNER_HOME=/usr/local/sonar-scannerxxx
export PATH=$PATH:$SCANNER_HOME/bin

source /etc/profile

扫描分析

sonar.projectKey 指定项目的关键字,sonar.host.url指定服务器地址(可以直接在配置文件中写死),projectName指定项目的名称, projectVersion指定项目的版本(可以用构建时间和构建ID定义),login指定登录用户名,password指定登录用户密码, projectDescription指定项目的描述信息, links.homepage指定项目的主页(超链接), sources指定扫描的目录, sourceEncoding指定扫描时的编码, java.binaries指定编译后的类文件目录(必填), java.test.binaries指定编译后的测试类目录,java.surefire.report指定测试报告目录。

代码语言:javascript
复制
sonar-scanner -Dsonar.host.url=http://192.168.1.200:9000 \
-Dsonar.projectKey=demo-maven-service \
-Dsonar.projectName=demo-maven-service \
-Dsonar.projectVersion=1.0 \
-Dsonar.login=admin \
-Dsonar.password=admin \
-Dsonar.ws.timeout=30 \
-Dsonar.projectDescription="my first project!" \
-Dsonar.links.homepage=http://www.baidu.com \
-Dsonar.sources=src \
-Dsonar.sourceEncoding=UTF-8 \
-Dsonar.java.binaries=target/classes \
-Dsonar.java.test.binaries=target/test-classes \
-Dsonar.java.surefire.report=target/surefire-reports

2. 自动化分析

在jenkins中安装插件sonarqube scanner 配置SonarQube服务器:登录Jenkins,然后转到“ 管理Jenkins”>“配置系统”。向下滚动到SonarQube配置部分,单击Add SonarQube,然后添加提示您的值。服务器身份验证令牌应创建为“机密文本”凭据。

首先我们在共享库中定义一个sonarqube.groovy,用与扫描。新建文件src/org/devops/sonarqube.groovy 在这里我们定义了一个服务器列表,用于选择本次扫描使用的服务器(存在多个sonar的时候很有用处) 使用withSonarQubeEnv使用在Jenkins中配置sonar环境。这个方法有5个参数服务器类型、项目名称、项目描述、项目扫描路径、分支名称

代码语言:javascript
复制
package org.devops


//scan
def SonarScan(sonarServer,projectName,projectDesc,projectPath,branchName){
    
    //定义sonar服务器列表
    def servers = ["test":"sonarqube-test","prod":"sonarqube-prod"]
    
    //使用sonar服务器
    withSonarQubeEnv("${servers[sonarServer]}"){

        def scannerHome = "/home/jenkins/buildtools/sonar-scanner-3.2.0.1227-linux/"
        def sonarDate = sh  returnStdout: true, script: 'date  +%Y%m%d%H%M%S'
        sonarDate = sonarDate - "\n"
        
        sh """ 
            ${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=${projectName} \
            -Dsonar.projectName=${projectName} -Dsonar.projectVersion=${sonarDate} -Dsonar.ws.timeout=30 \
            -Dsonar.projectDescription=${projectDesc} -Dsonar.links.homepage=http://www.baidu.com \
            -Dsonar.sources=${projectPath} -Dsonar.sourceEncoding=UTF-8 -Dsonar.java.binaries=target/classes \
            -Dsonar.java.test.binaries=target/test-classes -Dsonar.java.surefire.report=target/surefire-reports  -Dsonar.branch.name=${branchName} -X
        """
    }
}

在Jenkinsfile中引用: 我们首先加载jenkinslibrary共享库,引用sonarqube.groovy

代码语言:javascript
复制
@Library('jenkinslibrary@master') _

//func from shareibrary
def sonar = new org.devops.sonarqube()


pipeline {
    agent any
    
    stages {
        stage("codescan"){
            steps{
                script{
                    sonar.SonarScan("test","${JOB_NAME}","${JOB_NAME}","src")
                }
            }
        }
    }

}

效果:此时流水线运行完成后,在项目中可以看到Sonarqube的链接。点击即可进入sonarqube

项目的扫描结果


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps持续集成 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档