Jenkins+Sonar搭建

一、相关环境及下载地址

系统:Ubuntu

JDK:1.8

MySQL:5.7

软件包:

jenkins_2.121.3_all.deb

sonarqube-7.3.zip

sonar-scanner-cli-3.2.0.1227-linux.zip

其他环境:

Maven-3.5

Node-6.10

PS:对于JDK,Jenkins在2.6之后就必须要求是1.8,而且只能1.8,低了高了都不支持;对于MySQL,SonarQube要求是5.6以上。

Jenkins下载:

https://pkg.jenkins.io/debian-stable/binary/jenkins_2.121.3_all.deb

Sonar下载:

https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.3.zip

Sonar-Scanner下载:

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip

二、软件安装

Jenkins安装

命令:dpkg –i jenkins_2.121.3_all.deb

若有报错,执行# apt-get update 和# apt-get –f install, # ln -s /opt/jdk1.8.0_131/bin/java /usr/bin/java

启动:service Jenkins start

安装目录:

  1. pid目录:/var/run/Jenkins
  2. war目录:/usr/share/Jenkins
  3. home目录:/var/lib/Jenkins
  4. webroot目录:/var/cache/jenkins/war
  5. log目录:/var/log/Jenkins
  6. config文件:/etc/default/jenkins

Sonar安装

解压:unzip -o sonarqube-7.3.zip -d /usr/local/src/

配置:修改sonar.properties,配置MySQL信息。

启动:

cd /usr/local/src/sonarqube-7.3/bin/linux-x86-64/

./sonar.sh start

汉化:

下载https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases的jar包到sonar安装目录的extensions\plugins目录即可。

安装目录:(即解压目录)

  1. home目录:/usr/local/src/sonarqube-7.3
  2. log目录:/usr/local/src/sonarqube-7.3/logs
  3. temp目录:/usr/local/src/sonarqube-7.3/temp(运行时临时数据)
  4. data目录:/usr/local/src/sonarqube-7.3/data(H2数据库使用)
  5. config文件:/usr/local/src/sonarqube-7.3/conf/sonar.properties

Sonar-Scanner安装

解压:unzip -o sonar-scanner-cli-3.2.0.1227-linux.zip -d /usr/local/src/

检查:./sonar-scanner –h

安装目录:

  1. home目录:/usr/local/src/sonar-scanner-3.2.0.1227-linux
  2. config文件:/usr/local/src/sonar-scanner-3.2.0.1227-linux/conf/sonar-scanner.properties

Nginx转发

已申请域名:xxx

需要配置https。

Nginx配置:

server {
server_name xxx;
listen 80;
return 301 https://$host$request_uri;
}

server {
server_name xxx;
listen 443 ssl;
ssl_certificate /usr/local/nginx/conf/ssl/xxx.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/xxx.key;

ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

access_log /data/weblog/nginx/xxx-access.log main;

expires 15m;

ssi on;
charset utf-8;

error_page 500 502 503 504 /50x.html;

client_max_body_size 30m;

client_header_buffer_size 16k;
large_client_header_buffers 16 64k;

location / {
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9000;
}

location /jenkins {  #需要修改jenkins配置文件添加--prefix访问url的前缀,并设置监听地址为127.0.0.1
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/jenkins;
}

}

修改路径

Jenkins修改路径

  1. 1.        
    pid目录修改

a)        
修改config文件(/etc/default/jenkins)的PIDFILE值,修改后的目录要保证已经存在。

  1. 2.        
    war目录修改

a)        
修改config文件的JENKINS_WAR值,修改完成后,需要将原war目录中的jenkins.war文件(/var/share/jenkins/jenkins.war)拷至新目录中。

  1. 3.        
    home目录修改

a)        
修改config文件的JENKINS_HOME值,修改完成后,需要将原home目录中的所有文件(/var/lib/jenkins/*)拷贝至新目录。

  1. 4.        
    log目录修改

a)        
修改config文件的JENKINS_LOG值,修改后的目录要保证存在。

  1. 5.        
    webroot目录修改

a)        
修改config文件中JENKINS_ARGS值的--webroot属性,修改完成后,需要将原webroot目录中的所有文件(/var/cache/jenkins/war/*)拷贝至新目录中。

Sonar修改路径

  1. 1.        
    home目录修改

a)        
解压时指定解压目录即可。

  1. 2.        
    temp目录修改

a)        
修改config文件(sonar.properties)的sonar.path.temp值,修改后的目录要保证存在。

  1. 3.        
    data目录修改

a)        
修改config文件的sonar.path.data值,修改后的目录要保证存在。

  1. 4.        
    log目录修改

a)        
修改config文件的sonar.path.logs值,修改后的目录要保证存在。

PS:由于Sonar启动需要使用非root账户,所以Sonar的启动账户需要对上述目录有读写权限。

Sonar-Scanner修改路径

home目录修改

解压时指定目录即可。

三、配置环境

配置Sonarqube

首先是Sonarqube,因为后续步骤需要Sonarqube中生成的一个Authentication Token值。

打开Sonarqube,默认情况下是localhost:9000,登录使用admin/admin,然后会进入引导页,需要输入一个key,可以任意,输入确定后会生成一个Authentication Token值,这个比较重要,也只会显示一次,保存下来,然后按照提示操作完OK,我们只需要这个值;当然万一丢失了怎么办,不要慌张,我们重新生成,点击配置》权限》用户》令牌,如下图:

弹出框中,就可以为admin账户重新生成令牌,如下图:

我刚刚就生成了一个名字为new的令牌,横杠那就是令牌值,很重要,需要保存起来。

配置Jenkins

初始化密码

然后Jenkins,进入的时候需要等待,网上有说可以把工作目录中刚刚生成的文件hudson.model.UpdateCenter.xml中的url修改成http://mirror.xmission.com/jenkins/updates/update-center.json,再重启可以跳过等待,大家可以试一下。如果一直等待到离线模式,那么直接点击进入系统(具体按钮名字叫啥忘记了,但是绝对不是那个代理的按钮),或者进入引导式步骤,只要在安装插件的那一步,点击右上角的叉,关闭安装跳过这部就行;不论哪种最后都会到让你输入管理员密码,然后呢,你就需要去日志文件中找生成的密码,如果不修改路劲,那么日志是在/var/log/jenkins/jenkins.log,如下图:

打横线的就是初始化密码,或者去红框中的路劲找也可以的。

进入系统之后我们看到的界面是如下图:

安装Jenkins插件

OK,我们需要去安装插件了,系统管理》插件管理》可选插件,我们搜索以下几个:

  1. Git plugin
  2. JUnit Plugin(可能已经安装)
  3. Maven Integration plugin
  4. Subversion Plug-in
  5. SonarQube Scanner for Jenkins

安装即可,选中点击下方的直接安装,如下图:

配置Sonarqube
Server

进行相关配置,为了让我们能正常运行任务,系统管理》系统设置,然后我们需要新增一个Sonarqube,如下图:

点击了Add SonarQube按钮,之后就能出现框中的TAB页,name随意,Server URL必须要填写刚刚我们安装的Sonarqube服务的地址,而且一点必须是你的计算机能够打开的地址(至于为什么,后面的使用篇再讲),Server authentication token就是刚刚在Sonarqube中配置的Token值。

配置JDK

下一项配置,系统管理》全局工具配置,首先JDK,点击JDK安装,如下图:

填写好当前环境的JAVA_HOME值,别名随意,重要的是去掉自动安装选项。

配置SonarQube Scanner

然后SonarQube Scanner安装,如下图:

同样填写好SONAR_RUNNER_HOME的值,然后去掉自动安装选线。

配置Maven

然后Maven安装,如下图:

填写好MAVEN_HOME的值,Name随意,去掉自动安装选项。

最后,访问测试。

注:jenkins可以升级到最新版本,并熟悉gitlab和gitlab hook等插件的使用。

添加项目

添加完成之后,点击构建,成功之后即可在sonar中看到代码分析的结果。

Jenkins+Sonar搭建持续集成和代码质量检查环境的更多相关文章

  1. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  2. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以 ...

  3. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

  4. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一) 2015-01-14 20:28 by 飘扬的红领巾, 4322 阅读, 5 评论, 收藏, 编辑 ...

  5. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  6. Jenkins+Gitlab搭建持续集成(CI)环境

    利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...

  7. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  8. Jenkins 快速搭建持续集成环境

    持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...

  9. Jenkins快速搭建持续集成

    基于Jenkins快速搭建持续集成环境 Jenkins+tortoisesvn+MSBuild做到持续集成 附Jenkins的使用:http://www.infoq.com/cn/articles/M ...

随机推荐

  1. Android零基础入门第6节:配置优化SDK Manager,正式约会女神

    原文:Android零基础入门第6节:配置优化SDK Manager,正式约会女神 在前几期中总结分享了Android的前世今生.Android 系统架构和应用组件那些事.带你一起来聊一聊Androi ...

  2. redis的简介和使用

    简介 redis(Remote Dictionary Server)是一种Nosql技术,它是一个开源的高级kv存储和数据结构存储系统,它经常被拿来和Memcached相比较,但是Memcached不 ...

  3. UBUNTU 16.04 + CUDA8.0 + CUDNN6.0 + OPENCV3.2 + MKL +CAFFE + tensorflow

    首先说一下自己机子的配置 CPU:Intel(R) Core(TM) i5-5600 CUP @3.20GHz *4 GPU : GTX 1060 OS : 64bit Ubuntu16.04LTS ...

  4. 转换GMT秒数为日期时间格式-Delphi源码

    转换GMT秒数为日期时间格式-Delphi源码.收藏最近在写PE分析工具的时候,需要转换TimeDateStamp字段值为日期时间格式,这是Delphi的源码. //把GMT时间的秒数转换成日期时间格 ...

  5. Qt优雅地结束线程(两种方法都是用Mutex锁住bool变量进行修改,然后由bool变量控制耗时动作的退出,即正常退出)

    如果一个线程运行完成,就会结束.可很多情况并非这么简单,由于某种特殊原因,当线程还未执行完时,我们就想中止它.不恰当的中止往往会引起一些未知错误.比如:当关闭主界面的时候,很有可能次线程正在运行,这时 ...

  6. C# — WinForm TCP连接IPv4和IPv6的判断

    大家都知道, XP系统默认使用的是IPv4格式的IP地址, 而Win7系统默认使用的是IPv6格式的IP地址. 所以有些关于TCP连接的WinForm系统,在XP下可能运行正常,但在Win7下却不能运 ...

  7. Electron构建一个文件浏览器应用(一)

    在window.mac.linux系统中,他们都有一个共同之处就是以文件夹的形式来组织文件的.并且都有各自的组织方式,以及都有如何查询和显示哪些文件给用户的方法.那么从现在开始我们来学习下如何使用El ...

  8. 丢给你一个txt并同时获取你shell

    丢给你一个txt并同时获取你shell 0x00:回顾 <文本编辑器Vim/Neovim被曝任意代码执行漏洞> 听闻很多人知道这个漏洞,但是有一部分人能复现成功,一部分人复现不出来.这里我 ...

  9. Knative 初体验:Build Hello World

    作者 | 阿里云智能事业群技术专家 冬岛 Build 模块提供了一套 Pipeline 机制.Pipeline 的每一个步骤都可以执行一个动作,这个动作可以是把源码编译成二进制.可以是编译镜像也可以是 ...

  10. 详解Linux运维工程师必备技能

    张戈大神是腾讯的一名运维,张戈博客也是我接触到第一个 Linux 运维师的博客,最近也在接触 Linux,说到工具,在行外可以说是技能,在行内一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几 ...