Jenkins项目构建类型(纯小白使用教程4)
文章目录
Jenkins项目构建类型(纯小白使用教程3)
配置邮箱服务器发送构建结果
- Jenkins设置邮箱相关参数
Manage Jenkins->Configure System
- 设置Jenkins默认邮箱信息
- 准备邮件内容
在项目根目录编写email.html,并把文件推送到Gitlab,内容如下:(全部复制就行)
<!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>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <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=" %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>
- 编写Jenkinsfile添加构建后发送邮件
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url: 'git@192.168.66.100:itheima_group/web_demo.git']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package'
}
}
stage('项目部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'afc43e5e-4a4e-4de6-984f- b1d5a254e434', path: '', url: 'http://192.168.66.102: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'
)
}
}
}
- 测试
PS:邮件相关全局参数参考列表:
系统设置->Extended E-mail Notification->Content Token Reference,点击旁边的?号
安装SonarQube(1)
SonaQube简介
SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持java,C#,C/C++,Python,PL/SQL,Cobol,
JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测 (用的是es来检索的)
- 软件版本
软件 | 服务器 | 软件版本 |
---|---|---|
JDK | 192.168.66.101 | 1.8 |
Mysql | 192.168.66.101 | 5.7 |
SonarQube | 192.168.66.101 | 6.7.4 |
- 安装SonarQube
1)安装MySQL(已完成)
2)安装SonarQube
在MySQL创建sonar数据库
yum install unzip - 下载sonar压缩包:
https://www.sonarqube.org/downloads/ - 解压sonar,并设置权限
unzip sonarqube-6.7.4.zip 解压
mkdir /opt/sonar 创建目录
mv sonarqube-6.7.4/* /opt/sonar 移动文件
useradd sonar 创建sonar用户,必须sonar用于启动,否则报错
chown -R sonar. /opt/sonar 更改sonar目录及文件权限
- 修改sonar配置文件
vim /opt/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
注意:sonar默认监听9000端口,如果9000端口被占用,需要更改
- 启动sonar 一定要用sonar用户启动
su sonar /opt/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目录下
- 访问sonar
http://XXXXXX:9000/about
- 登录–默认账户:admin/admin
代码审查SonarQube(2)
Jenkins安装SonarQube Scanner插件
配置SonarQube凭证
- 系统管理-系统设置-全局工具配置
添加SonarQube凭证
- 系统管理-系统设置-系统配置
- 如果添加凭证不了,可以去凭证配置里配置
- 重新操作即可
配置项目构建环境
非流水线项目
# must be unique in a given SonarQube instance
# 检测标记 标记唯一!
sonar.projectKey=web_demo
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
# 检测标记 标记唯一!
sonar.projectName=web_demo
#版本号
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.
# 代码路径 。当前根目录扫描 ,也可以扫描 /src/main目录
sonar.sources=.
# 排序一些元素不扫描
sonar.exclusions=**/test/**,**/target/**
#jdk版本
sonar.java.source=1.8
sonar.java.target=1.8
# Encoding of the source code. Default is default system encoding
#编码格式
sonar.sourceEncoding=UTF-8
- 点击保存,重新构建项目
- 之后我们访问sonar项目
- Bugs 比较明显的bug
- Code Smells 代码不稳定的因素
- Coverage 代码测试覆盖范围
- Duplications 冗余代码
流水线项目
- 项目新增 sonar-project.properties 配置文件
# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_pipline
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_pipline
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 配置文件新增步骤
stage('sonar code'){
steps{
script {
// 引入sonar 工具 Jenkins系统管理-全局工具配置
scannerHome = tool 'sonar-scanner'
}
// Jenkins系统管理-系统配置
withSonarQubeEnv('sonarqube') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
- 重新上传项目,查看sanor