Jenkins+Sonar搭建持續集成和代碼質量檢查環境


 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中看到代碼分析的結果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM