Jenkins+svn+maven+sonarqube自动化部署总结
1、Jenkins安装与配置
1)Jenkins下载
1)部署Jenkins 需要提前安装JDK
2)通过 weget http://mirrors.jenkins.io/war-stable/2.289.1/jenkins.war 下载jenkins war包
直接丢到tomcat webapps下
3)修改tomcat下/conf/server.xml
增加URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1" 72 connectionTimeout="20000" 73 redirectPort="8443" URIEncoding="UTF-8"/>
4)通过http://地址:8080/jenkins 访问 Jenkins 主页,在启动之后Linux命令窗口 会有初始密码【要记住保存下来】
2)Jenkins配置JDK与Maven等
要下载的插件
Subversion Plugin-in 整合svn的插件
Deploy to container 整合发布war包的
SonarQube Scanner
1) 查看密码【复制密码保存到txt中,之后要用到】
cat /root/.jenkins/secrets/initialAdminPassword
2) 密码登录
3) 插件安装
可以选择插件安装也可以不安装
4) 登录
可以创建用户也可以右下角选择admin用户登录
5) 全局安全配置
勾选 允许用户注册(这样即使忘记密码也可以注册)
6) 全局工具配置
配置maven的settings.xml以及仓库
在Defalut settings provider 下选择 settings file in filesystem
在Defalut global settings provider 下选择 Global settings file on filesystem
在两个File path 填写settings.xml的文件路径以及该文件。($MAVEN_HOME)
7) 设置JDK
起个别名(随便起)
取消自动安装,指定JAVA_HOME的路径 ($JAVA_HOME)
8)设置Maven
起个别名
取消自动安装,指定MAVEN_HOME的路径
2、svn与Jenkins集成
在svn 目录上
1)在conf里 编辑 svnserve.conf
[解除注释及修改]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
2) passwd 创建
suman =123123
3) authz
subman = rw
* =
Jenkins 新建任务
1) 取名字
2) 源码管理
subversion下
Repository URL 下填写svn项目目录+工程目录+@HEAD
Credentials add Jenkins 填写用户名 密码
3)配置
构建下 增加构建步骤
Invoke top-level Maven targets
Maven vesion 选择之前创建的maven 别名
Goals 填写 【clean install】 保存
4)点击立即构建
尝试构建是否成功
5) 构建触发器(开始配置 提交代码自动打包)
触发远程构建
http://192.168.70.131:8080/jenkins/job/项目名字/build?token=XXX_TOKEN
svn项目仓库 hooks目录 编辑 post-commit.tml文件
curl -X post -v -u admin:2f6bff33bda14baba83ba1c002045f05 http://192.168.70.131:8080/jenkins/job/项目名/build?token=XXX_TOKEN
复制post-commit.tml 不要带tml
在最下面粘贴
3、sonarqube安装及与Jenkins 集成
1、安装数据库
创建数据库
创建sonar 用户
提高用户权限:chown -R sonar. /sonar
cd confg sonar.properties 修改用户名密码 放开连接数据库信息
以sonar 用户启动 sonar.sh start
默认登录 admin admin
输入字符 生成密钥并牢记保存。
全局工具配置
sonarqubeScanner
取名字 自动安装
configure system
名字
证书 -> 凭据 -> jenkins 全局 ->添加凭据 -> 下拉密码文本 密钥+描述
保存
【jenkins 配置sonarqube】
# must be unique in a given SonarQube instance
sonar.projectKey=parallel
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=parallel
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.binaries=target/classes
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.projectVersion=${BUILD_NUMBER}//配置版本号,不然第一次提交正常,之后的提交显示错误
4、问题汇总
Caused by: org.tmatesoft.svn.core.SVNAuthenticationException: svn: E170001: Authentication required for ‘svn://192.168.1.95:3690 6f205048-4e01-0010-937d-7723a8b4cf5f‘
提示权限不足的问题 参考【1】
1、打开sonarqube的控制台,使用admin登录后 ,在配置->SCM->菜单中,将Disabled the SCM Sensor设置为true,
2、在svn页面,设置svn的用户名和密码。
3、记得要保存一下,不然不生效。
jenkins构建失败解决办法参考
【1】sonar-scanner扫描代码出错 SonarQube svn: E170001
sonarqube启动失败解决办法参考
【1】SonarQube 搭建代码质量管理平台
【2】SonarQube部署采坑
Jenkins定时构建
【1】Jenkins定时构建
sonarqube插件导出报告
【1】SonarQube 插件之 Issues Report & SonarLint 的配置及使用
【2】sonar获取多次版本号