Jenkins+Sonar搭建持續整合和程式碼質量檢查環境
Jenkins+Sonar搭建
一、相關環境及下載地址
系統:Ubuntu
JDK:1.8
SQL/">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下載:
ofollow,noindex" target="_blank">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下載:
二、軟體安裝
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
安裝目錄:
- pid目錄:/var/run/Jenkins
- war目錄:/usr/share/Jenkins
- home目錄:/var/lib/Jenkins
- webroot目錄:/var/cache/jenkins/war
- log目錄:/var/log/Jenkins
- 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目錄即可。
安裝目錄:(即解壓目錄)
- home目錄:/usr/local/src/sonarqube-7.3
- log目錄:/usr/local/src/sonarqube-7.3/logs
- temp目錄:/usr/local/src/sonarqube-7.3/temp(執行時臨時資料)
- data目錄:/usr/local/src/sonarqube-7.3/data(H2資料庫使用)
- 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
安裝目錄:
- home目錄:/usr/local/src/sonar-scanner-3.2.0.1227-linux
- 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. pid 目錄修改
a) 修改config檔案(/etc/default/jenkins)的PIDFILE值,修改後的目錄要保證已經存在。
- 2. war 目錄修改
a) 修改config檔案的JENKINS_WAR值,修改完成後,需要將原war目錄中的jenkins.war檔案( /var/share/jenkins/jenkins.war )拷至新目錄中。
- 3. home 目錄修改
a) 修改config檔案的JENKINS_HOME值,修改完成後,需要將原home目錄中的所有檔案( /var/lib/jenkins/* )拷貝至新目錄。
- 4. log 目錄修改
a) 修改config檔案的JENKINS_LOG值,修改後的目錄要保證存在。
- 5. webroot 目錄修改
a) 修改config檔案中JENKINS_ARGS值的 --webroot 屬性,修改完成後,需要將原webroot目錄中的所有檔案( /var/cache/jenkins/war/* )拷貝至新目錄中。
Sonar修改路徑
- 1. home 目錄修改
a) 解壓時指定解壓目錄即可。
- 2. temp 目錄修改
a) 修改config檔案(sonar.properties)的sonar.path.temp值,修改後的目錄要保證存在。
- 3. data 目錄修改
a) 修改config檔案的sonar.path.data值,修改後的目錄要保證存在。
- 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,我們需要去安裝外掛了,系統管理》外掛管理》可選外掛,我們搜尋以下幾個:
- Git plugin
- JUnit Plugin(可能已經安裝)
- Maven Integration plugin
- Subversion Plug-in
- 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等外掛的使用。