Jenkins构建Maven项目

这篇具有很好参考价值的文章主要介绍了Jenkins构建Maven项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3 Jenkins构建Maven项目

3.1 Jenkins项目构建类型(1)-Jenkins构建的项目类型介绍

Jenkins中自动构建项目的类型有很多,常用的有以下三种:

  • 自由风格软件项目(FreeStyle Project)

  • Maven项目(Maven Project)

  • 流水线项目(Pipeline Project)

每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(PS:个人推荐使用流水线类型,因为灵活度非常高)

3.2 Jenkins项目构建类型(2)-自由风格项目构建

演示创建一个自由风格项目来完成项目的集成过程:

拉取代码->编译->打包->部署

3.2.1 拉取代码

1)创建项目

jenkins安装maven,Java架构,jenkins,maven,java

2)配置源码管理,从gitlab拉取代码

jenkins安装maven,Java架构,jenkins,maven,java

3.2.2 编译打包

构建->添加构建步骤->Executor Shell

echo "开始编译和打包"
mvn clean package
echo "编译和打包结束"

jenkins安装maven,Java架构,jenkins,maven,java

3.2.3 部署

把项目部署到远程的Tomcat里面

1)安装 Deploy to container插件

Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现

2)添加Tomcat用户凭证

jenkins安装maven,Java架构,jenkins,maven,java

3)添加构建后操作

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

点击"Build Now",开始构建过程

jenkins安装maven,Java架构,jenkins,maven,java

4)部署成功后,访问项目

http://192.168.5.5:8080/web_demo-1.0-SNAPSHOT/

jenkins安装maven,Java架构,jenkins,maven,java

3.2.4 演示改动代码后的持续集成

1)IDEA中源码修改并提交到gitlab

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

2)在Jenkins中项目重新构建

jenkins安装maven,Java架构,jenkins,maven,java

3)访问Tomcat

http://192.168.5.5:8080/web_demo-1.0-SNAPSHOT/

jenkins安装maven,Java架构,jenkins,maven,java

3.3 Jenkins项目构建类型(3)-Maven项目构建

1)安装Maven Integration插件

Maven Integration

jenkins安装maven,Java架构,jenkins,maven,java

2)创建Maven项目

jenkins安装maven,Java架构,jenkins,maven,java

3)配置项目

拉取代码和远程部署的过程和自由风格项目一样,只是"构建"部分不同

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.4 Jenkins项目构建类型(4)-Pipeline流水线项目构建

3.4.1 Pipeline简介

1)概念 Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

2)使用Pipeline有以下好处(来自翻译自官方文档):

代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。 持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。 可停止:Pipeline可接收交互式输入,以确定是否继续执行Pipeline。 多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。 可扩展:Pipeline插件支持其DSL的自定义扩展 ,以及与其他插件集成的多个选项。

3)如何创建 Jenkins Pipeline

  • Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy

  • Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法

  • Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一个 Jenkinsfile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM)中直接载入 Jenkinsfile Pipeline 这种方法)。

3.4.2 安装Pipeline插件

Manage Jenkins->Manage Plugins->可选插件

pipeline

jenkins安装maven,Java架构,jenkins,maven,java

安装插件后,创建项目的时候多了“流水线”类型

jenkins安装maven,Java架构,jenkins,maven,java

3.4.3 Pipeline语法快速入门

1)Declarative声明式-Pipeline

创建项目

jenkins安装maven,Java架构,jenkins,maven,java

流水线->选择HelloWorld模板

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

生成内容如下:

pipeline {
    agent any
​
    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
}

stages:代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage

stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。

steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。

编写一个简单声明式Pipeline:

pipeline {
    agent any
​
    stages {
        stage('拉取代码') {
            steps {
                echo '拉取代码'
            }
        }
        stage('编译构建') {
            steps {
                echo '编译构建'
            }
        }
        stage('项目部署') {
            steps {
                echo '项目部署'
            }
        }
    }
}

点击构建,可以看到整个构建过程

jenkins安装maven,Java架构,jenkins,maven,java

2)Scripted Pipeline脚本式-Pipeline

创建项目

jenkins安装maven,Java架构,jenkins,maven,java

本次选择"Scripted Pipeline"

jenkins安装maven,Java架构,jenkins,maven,java

node {
    def mvnHome
    stage('Preparation') { // for display purposes
​
    }
    stage('Build') {
​
    }
    stage('Results') {
    }
}
  • Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,后续讲到Jenkins的Master-Slave架构的时候用到。

  • Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:Build、Test、Deploy,Stage 是一个逻辑分组的概念。

  • Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,由各类 Jenkins 插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令一样。

编写一个简单的脚本式Pipeline

node {
	def mvnHome
	stage('拉取代码') { // for display purposes
		echo '拉取代码'
	}
	stage('编译构建') {
		echo '编译构建'
	}
	stage('项目部署') {
		echo '项目部署'
	}
}

构建结果和声明式一样!

3.4.4 拉取代码

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

pipeline {
	agent any

	stages {
		stage('拉取代码') {
			steps {
				checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '290fa226-a185-4097-aff6-77d2aab6dcf4', url: 'git@192.168.5.4:root/web_demo.git']]])
			}
		}
	}
}

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.4.5 编译打包

jenkins安装maven,Java架构,jenkins,maven,java

pipeline {
	agent any

	stages {
		stage('拉取代码') {
			steps {
				checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '290fa226-a185-4097-aff6-77d2aab6dcf4', url: 'git@192.168.5.4:root/web_demo.git']]])
			}
		}
		stage('编译构建') {
			steps {
				sh 'mvn clean package'
			}
		}
	}
}

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.4.6 部署

jenkins安装maven,Java架构,jenkins,maven,java

pipeline {
	agent any

	stages {
		stage('拉取代码') {
			steps {
				checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '290fa226-a185-4097-aff6-77d2aab6dcf4', url: 'git@192.168.5.4:root/web_demo.git']]])
			}
		}
		stage('编译构建') {
			steps {
				sh label: '', script: 'mvn clean package'
			}
		}
		stage('项目部署') {
			steps {
				deploy adapters: [tomcat8(credentialsId: '87f9d1b2-7b05-4a7f-8647-ffb54c042645', path: '', url: 'http://192.168.5.5:8080/')], contextPath: null, war: 'target/*.war'
			}
		}
	}
}

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.4.7 Pipeline Script from SCM

之前都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放在项目中(一起进行版本控制)

1)在项目根目录建立Jenkinsfile文件,把内容复制到该文件中

jenkins安装maven,Java架构,jenkins,maven,java

把Jenkinsfile上传到Gitlab

2)在项目中引用该文件

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.5 Jenkins项目构建细节(1)-常用的构建触发器

Jenkins内置4种构建触发器:

  • 触发远程构建

  • 其他工程构建后触发(Build after other projects are build)

  • 定时构建(Build periodically)

  • 轮询SCM(Poll SCM)

3.5.1 触发远程构建

jenkins安装maven,Java架构,jenkins,maven,java

触发构建url:http://192.168.5.3:808/job/test03_pipeline01/build?token=1118

jenkins安装maven,Java架构,jenkins,maven,java

3.5.2 其他工程构建后触发

1)创建pre_job流水线工程

jenkins安装maven,Java架构,jenkins,maven,java

2)配置需要触发的工程

jenkins安装maven,Java架构,jenkins,maven,java

3.5.3 定时构建

jenkins安装maven,Java架构,jenkins,maven,java

定时字符串从左往右分别为: 分 时 日 月 周

一些定时表达式的例子:

每30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32
每2个小时构建一次: H H/2 * * *
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午
4:38) H H(9-16)/2 * * 1-5

3.5.4 轮询SCM

轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。

jenkins安装maven,Java架构,jenkins,maven,java

注意:这次构建触发器,Jenkins会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。

3.6 Jenkins项目构建细节(2)-Git hook自动触发构建

刚才演示到在Jenkins的内置构建触发器中,轮询SCM可以实现Gitlab代码更新,项目自动构建,但是该方案的性能不佳。那有没有更好的方案呢? 有的。就是利用Gitlab的webhook实现代码push到仓库,立即触发项目自动构建。

jenkins安装maven,Java架构,jenkins,maven,java

3.6.1 安装Gitlab Hook插件

需要安装两个插件:

Gitlab Hook

GitLab

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.6.2 Jenkins设置自动构建

jenkins安装maven,Java架构,jenkins,maven,java

等会需要把生成的webhook URL配置到Gitlab中。

3.6.3 Gitlab配置webhook

1)开启webhook功能

使用root账户登录到后台,点击Admin Area -> Settings -> Network

勾选"Allow requests to the local network from web hooks and services"

jenkins安装maven,Java架构,jenkins,maven,java

2)在项目添加webhook

点击项目->Settings->Integrations

jenkins安装maven,Java架构,jenkins,maven,java

注意:在Jenkins控制台完成以下设置,否则会报错

Manage Jenkins->Configure System

jenkins安装maven,Java架构,jenkins,maven,java

3.7 Jenkins项目构建细节(3)-Jenkins的参数化构建

有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时可以使用参数化构建。

Jenkins支持非常丰富的参数类型

jenkins安装maven,Java架构,jenkins,maven,java

接下来演示通过输入gitlab项目的分支名称来部署不同分支项目。

3.7.1 项目创建分支,并推送到Gitlab上

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

新建分支:v1,代码稍微改动下,然后提交到gitlab上。 这时看到gitlab上有一个两个分支:master和v1

jenkins安装maven,Java架构,jenkins,maven,java

3.7.2 在Jenkins添加字符串类型参数

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.7.3 改动pipeline流水线代码

jenkins安装maven,Java架构,jenkins,maven,java

3.7.4 点击Build with Parameters

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

输入分支名称,构建即可!构建完成后访问Tomcat查看结果

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.8 Jenkins项目构建细节(4)-配置邮箱服务器发送构建结果

3.8.1 安装Email Extension插件

Email Extension Template

jenkins安装maven,Java架构,jenkins,maven,java

3.8.2 Jenkins设置邮箱相关参数

Manage Jenkins->Configure System

jenkins安装maven,Java架构,jenkins,maven,java

设置邮件参数

jenkins安装maven,Java架构,jenkins,maven,java

设置Jenkins默认邮箱信息

jenkins安装maven,Java架构,jenkins,maven,java

测试邮箱是否可以发送成功

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.8.3 准备邮件内容

在项目根目录编写email.html,并把文件推送到Gitlab,内容如下:

jenkins安装maven,Java架构,jenkins,maven,java

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
      offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
       style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
    <tr>
        <td>(本邮件是程序自动下发的,请勿回复!)</td>
    </tr>
    <tr>
        <td><h2>
            <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
        </h2></td>
    </tr>
    <tr>
        <td><br />
            <b><font color="#0B610B">构建信息</font></b>
            <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td>
            <ul>
                <li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>
                <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li>
                <li>触发原因:&nbsp;${CAUSE}</li>
                <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                <li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
                <li>工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                <li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
            </ul>
        </td>
    </tr>
    <tr>
        <td><b><font color="#0B610B">Changes Since Last
            Successful Build:</font></b>
            <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td>
            <ul>
                <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
            </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
        </td>
    </tr>
    <tr>
        <td><b>Failed Test Results</b>
            <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td><pre
                style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
            <br /></td>
    </tr>
    <tr>
        <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
            <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td><textarea cols="80" rows="30" readonly="readonly"
                      style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
        </td>
    </tr>
</table>
</body>
</html>

3.8.4 编写Jenkinsfile添加构建后发送邮件

jenkins安装maven,Java架构,jenkins,maven,java

pipeline {
	agent any

	stages {
		stage('拉取代码') {
			steps {
				checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: '290fa226-a185-4097-aff6-77d2aab6dcf4', url: 'git@192.168.5.4:root/web_demo.git']]])
			}
		}
		stage('编译构建') {
			steps {
				sh 'mvn clean package'
			}
		}
		stage('项目部署') {
			steps {
				deploy adapters: [tomcat8(credentialsId: '87f9d1b2-7b05-4a7f-8647-ffb54c042645', path: '', url: 'http://192.168.5.5:8080/')], contextPath: null, war: 'target/*.war'
			}
		}
	}
	post {
		always {
			emailext(
				subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
				body: '${FILE,path="email.html"}',
				to: 'xxx@qq.com'
			)
		}
	}
}

测试邮件发送情况

jenkins安装maven,Java架构,jenkins,maven,java

邮件发送格式存在问题,可以修改以下字段

jenkins安装maven,Java架构,jenkins,maven,java

PS:邮件相关全局参数参考列表:

jenkins安装maven,Java架构,jenkins,maven,java

3.9 Jenkins+SonarQube代码审查(1) - 安装SonarQube

3.9.1 SonaQube简介

jenkins安装maven,Java架构,jenkins,maven,java

SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前 支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检 测。

官网:https://www.sonarqube.org/

3.9.2 环境配置说明

名称 IP地址 安装软件
持续基础服务器 192.168.5.3 ... SonarQube6.7.4,Mysql5.7
代码托管服务器 192.168.5.4 gitlab-ce-12.4.2
应用测试服务器 192.168.5.5 JDK1.8,Tomcat8.5

3.9.3 安装SonarQube

1)安装MySQL

详细请参考文档:Linux-Mysql安装文档

2)安装SonarQube 在MySQL创建sonar数据库

create database sonar;

jenkins安装maven,Java架构,jenkins,maven,java

下载sonar压缩包:

由于SonarQube在7.9版本后开始就不再支持MySQL连接

个人收集:

wget https://cunqi0105-1300757323.cos.ap-shanghai.myqcloud.com/install-pkg/sonarqube-6.7.4.zip

解压sonar,并设置权限

yum install unzip
  # 解压
cd /root &&unzip sonarqube-6.7.4.zip 
mv sonarqube-6.7.4 /usr/local/sonar 
useradd sonar && chown -R sonar. /usr/local/sonar

修改sonar配置文件

vim /usr/local/sonar/conf/sonar.properties
sonar.jdbc.username=root 
sonar.jdbc.password=Root@123

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

jenkins安装maven,Java架构,jenkins,maven,java

注意:sonar默认监听9000端口,如果9000端口被占用,需要更改。

jenkins安装maven,Java架构,jenkins,maven,java

启动sonar

su - sonar 
su sonar ./bin/linux-x86-64/sonar.sh start 启动
su sonar ./bin/linux-x86-64/sonar.sh status 查看状态
su sonar ./bin/linux-x86-64/sonar.sh stop 停止
tail -f logs/sonar.logs 查看日志

访问sonar

http://192.168.5.3:9000

jenkins安装maven,Java架构,jenkins,maven,java

默认账户:admin/admin

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

6c4dd14a866779edf26f4cc741f5fe8ec1bb9379

3.10 Jenkins+SonarQube代码审查(2) - 实现代码审查

jenkins安装maven,Java架构,jenkins,maven,java

3.10.1 安装SonarQube Scanner插件

SonarQube Scanner

jenkins安装maven,Java架构,jenkins,maven,java

3.10.2 添加SonarQube凭证

jenkins安装maven,Java架构,jenkins,maven,java

3.10.3 Jenkins进行SonarQube配置

Manage Jenkins->Configure System->SonarQube servers

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

Manage Jenkins->Global Tool Configuration

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.10.4 SonaQube关闭审查结果上传到SCM功能

jenkins安装maven,Java架构,jenkins,maven,java

3.10.5 在项目添加SonaQube代码审查(非流水线项目)

添加构建步骤:

# must be unique in a given SonarQube instance
sonar.projectKey=tset-01
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=tset-01
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**

sonar.java.source=1.8
sonar.java.target=1.8

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

jenkins安装maven,Java架构,jenkins,maven,java

3.10.6 在项目添加SonaQube代码审查(流水线项目)

jenkins安装maven,Java架构,jenkins,maven,java

# must be unique in a given SonarQube instance
sonar.projectKey=tset-02
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=tset-02
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**

sonar.java.source=1.8
sonar.java.target=1.8

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

2)修改Jenkinsfile,加入SonarQube代码审查阶段

pipeline {
	agent any

	stages {
		stage('拉取代码') {
			steps {
				checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: '290fa226-a185-4097-aff6-77d2aab6dcf4', url: 'git@192.168.5.4:root/web_demo.git']]])
			}
		}
		stage('编译构建') {
			steps {
				sh 'mvn clean package'
			}
		}
		stage('SonarQube代码审查') {
			steps{
				script {
					// 引入sonarqubescanner工具
					scannerHome = tool 'sonarqube-scanner'
				}
				//引入sonarqube的服务器环境
				withSonarQubeEnv('sonarqube') {
					sh "${scannerHome}/bin/sonar-scanner"
				}
			}
		}
		stage('项目部署') {
			steps {
				deploy adapters: [tomcat8(credentialsId: '87f9d1b2-7b05-4a7f-8647-ffb54c042645', path: '', url: 'http://192.168.5.5:8080/')], contextPath: null, war: 'target/*.war'
			}
		}
	}
	post {
		always {
			emailext(
				subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
				body: '${FILE,path="email.html"}',
				to: 'xxx@qq.com'
			)
		}
	}
}

3)到SonarQube的UI界面查看审查结果

 




https://www.cnblogs.com/weicunqi/p/14857492.html文章来源地址https://www.toymoban.com/news/detail-788388.html

到了这里,关于Jenkins构建Maven项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins执行Maven项目的离线构建,引用本地lib资源方案记录

    这段时间手头上有个多模态结构的Maven项目需要给到客户进行验证部署,且不能直接打包镜像,而是在客户本地进行编译构建,但由于客户方的 Maven 私库有网络隔离不能连通外网,我们无法将项目的其他依赖推送到客户方,所以就需要将项目适配成引用本地lib目录下的jar包。

    2024年02月04日
    浏览(44)
  • jenkins 2.346.1 从git拉取后自动构建部署springboot maven项目

    1、jenkins官网下载 jenkins2.346.1版本(2.346之后不支持java8) Jenkins 的安装和设置 下载的war包通过 java -jar jenkins.war可运行 也可下载安装版本直接安装 http://localhost:8080,端口号8080根据安装时的设定进行对应的变更,安装后需要等待一段时间。 确认发布应用的服务器安装了java g

    2024年02月02日
    浏览(47)
  • Docker 安装 Jenkins 并部署 Maven 项目

    在开始之前,我们需要保证系统中已经安装了Docker、JDK、Maven。 我这里使用的是 2.344 版本的 Jenkins,拉取命令如下: 需要稍微等一会,等待拉取完成。 镜像下载完成后,我们可以通过如下命令查看我们 docker 中的所有镜像。 这里可以看到我们刚才拉取的 2.344版本的 Jenkins 镜

    2024年02月13日
    浏览(48)
  • centos7下载安装jenkins并配置拉取maven项目一条龙

    首先需要安装JAVA环境:https://www.cnblogs.com/mufeng07/p/12150820.html 如果你的系统没有自带git,那么也需要安装一个 yum install git maven也需要安装,安装命令如下 maven安装完成后,需要配置maven 第一种方法 第二种方法 直接下载 rpm 安装,各个版本地址 https://pkg.jenkins.io/ 其中安装jenk

    2024年02月07日
    浏览(52)
  • Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

    1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage JenkinstoolsJDK 安装 安装插件 Deploy to container 安装此插件,才能将打好的包部署到tomcat上     配置国内mvn源 创建maven项目 1  2   3    4    5    6    7    8     9 10  

    2024年02月05日
    浏览(53)
  • Jenkins创建maven项目

    如果在项目没有看到maven,需要下载插件 本机需要有maven,并且maven配置过国内镜像,否则很大概率插件下不下来,如果有docker之前没有配置过需要进入docker手动配置。 需要在全局中配置maven的 setting.xml 新建项目 新建任务 输入名称 取名为test 配置相关 根据自己需要填写这两

    2024年01月22日
    浏览(36)
  • jenkins中maven的安装及配置,如何在jenkins中创建maven任务。

    本文介绍了在jenkins中maven的安装及配置(安装maven及jdk的方法),以及如何在jenkins中创建maven任务。 有三点需要注意的地方。         maven一定要安装在jenkins服务器上。         maven安装之前要先安装jdk。         建任务前,需要有git环境,并配置好用户名密码。 1

    2023年04月17日
    浏览(44)
  • Jenkins自动部署Maven项目详细教程

    Jenkins自动化部署实现原理 一、Jenkins安装 下载地址:https://www.jenkins.io/download/ (一)windows环境安装 1.jenkins项目有两条发布线,分别是LTS长期支持版(或稳定版)和每周更新版(最新版)。建议选择LTS长期支持版,下载通用java项目war包。 2.下载jdk11以上版本并安装,安装后配

    2024年02月07日
    浏览(96)
  • Jenkins配置maven项目,打包、部署、发布

    Jenkins和项目在两台服务器上 Jenkins的下载安装部署省略,可自行上官网。 1.安装maven插件 完成后,会出现“success”,并且勾选“安装完成后重启Jenkins(空闲时)” 2.部署有Jenkins的服务器上,下载maven,配置环境变量,我在opt/目录下放着。  执行命令: Jenkins配置maven 配置maven,

    2024年02月09日
    浏览(42)
  • 记录使用jenkins配置maven,并且打包,部署,发布maven项目的过程

    专栏的前面几篇博客已经把jenkins和gitlab集成起来了,接着我们开始打包,部署发布maven项目 首先在jenkins中安装maven,docker安装的maven默认安装了java,但是没有安装maven,所以这里我们需要自己进入到jenkins容器中,然后安装maven。 我这里的maven是自己在官网传送门下载的最新版

    2024年02月02日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包