jenkins+sonarqube+自动部署服务

Posted 君莫笑_0808

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins+sonarqube+自动部署服务相关的知识,希望对你有一定的参考价值。

一、jenkins 配置Pipeline 

 二、新建共享库执行脚本

   共享库可以是一个普通的gitlab项目,目录结构如下

 三、添加到共享库

Jenkins Dashboard–>系统管理–>系统配置–>Global Pipeline Libraries

 Name: 共享库名称,自定义即可;
Default version: 共享库版本,输入版本库分支名称、Tag 名称、Commit 值其中之一即可;
Load implicitly:如果选中,脚本将自动访问这个库,而不需要通过@Library请求它即隐式加载;
Allow default version to be overridden:如果选中,脚本可以通过在@Library注释中添加@someversion来选择库的自定义版本。否则,他们被限制使用您在这里选择的版本;
Include @Library changes in job recent changes:如果选中该选项,库中的任何更改都将包含在构建的更改集中,而更改库将导致为包含此库的管道运行新的构建。@Library(value=“name@version”, changelog=true|false),意思可以重写调用版本;
Cache fetched versions on controller for quick retrieval:如果选中此项,使用此库获取的版本将缓存在控制器上;
Retrieval method: 配置公共库获取的方式,并配置 Git 相关信息;
Library Path (optional):允许您设置从 SCM 根目录到库目录根目录的相对路径,可选参数;

四、如何引用共享库

在自定义的 Pipeline或者 Jenkinsfile 中通改过@Libray 形式进行引用,Jenkinsfile如下:

Jenkinsefile

@Library("mylib@main") _
def mytools = new org.devops.tools()
def sonarapi = new org.devops.sonarapi()

pipeline 
	agent  label  "onemap-gch" 
	stages 
        stage('Pull Code') 
            steps 
                checkout([$class: 'GitSCM', branches: [[name: '*/dev']], extensions: [], userRemoteConfigs: [[credentialsId: 'b78b9ca3-a0ea-422b-b8d6-fa9dc030403a', url: 'http://192.168.2.16/develop/beautiful-village-java.git']]])
            
        
        stage ('Sonar Scan') 
            steps 
                script 
                    def sonarqubeScanner = tool 'sonarqube-scanner-4.8';
                    withSonarQubeEnv(credentialsId: 'sonar_token') 
                    sh "$sonarqubeScanner/bin/sonar-scanner " +
                            "-Dsonar.projectName=beautiful-village " +
                            "-Dsonar.projectKey=com.gj.map.village.beautiful-village " +
                            "-Dsonar.projectVersion=1.0 " +
                            "-Dsonar.sourceEncoding=utf8  " +
                            "-Dsonar.sources=src/main/java  " +
                            "-Dsonar.language=java  " +
                            "-Dsonar.java.binaries=target/classes"
                    

                    // (9) 暂停10s等待sonarqube扫描反馈
                    sh "sleep 10s"
                    // 方式1
                    timeout(1) 
                        def qg = waitForQualityGate()
                        if (qg.status != 'OK') 
                            error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: $qg.status"
                         else 
                            echo "successful"
                        
                    
                
            
        

        stage('Maven Build') 
            steps 
                sh '/home/maven/apache-maven-3.8.5/bin/mvn clean package -DskipTests'
            
        
        stage('Publish Over SSH') 
            steps 
                sshPublisher(publishers: [sshPublisherDesc(configName: '241', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /opt/workspace/beautiful-village && ./start.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/beautiful-village', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            
        


	


Jenkins集成Sonarqube

1丶项目背景

因公司业务需求,需要构建SonarQube代码审查平台,并且可以让其集成至Jenkins中.实现自动化代码审查打包流程.

2丶准备工作

腾讯云服务器
系统版本为Centos7.9
Jenkins采用公司现有的Jenkins,此次不涉及Jenkins的部署
此次部署为了方便采用容器编排工具docker-compose进行部署
SonarQube的版本采用8.9的镜像

3丶开始安装Sonarqube

​docker-compose.yml​

#注意SonarQube8.x的版本不再支持mysql作为存储数据库





以上是关于jenkins+sonarqube+自动部署服务的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins集成Sonarqube

自动化代码审查平台: 基于Docker Compose整合Jenkins + SonarQube

Tomcat+Jenkins+SonarQube+SVN+Maven 集成自动化环境搭建(Windows10环境下)

SonarQube jenkins 要求输入登录名和密码

配置sonarqube_jenkins进行持续JAVA代码自动构建审查

持续集成Jenkins+sonarqube部署教程