docker运行jenkins挂掉_【图文】Jenkins教程集成SonarQube
什么是SonarQube?
看看維基百科的說明:
SonarQube與CI/CD架構圖
SonarQube與CI/CD架構圖Docker運行SonarQube
簡單了解之后,開始安裝SonarQube.這里用Docker安裝
注:這里用mysql來存儲SonarQube的數據,SonarQube7.9起已經不在支持mysql了,可以安裝官方推薦的PostgreSQL
- SonarQube 6.7.7
- Docker-CE 19.03.1
- Mysql 5.7
安裝
直接運行這個docker命令來安裝,網上其他的教程有什么掛載文件什么的,我試了都會安裝失敗,原因還是因為權限原因,因為SonarQube不是以root用戶運行的,導致沒權限讀寫掛載出來的文件夾.
注意:創建容器前一定要先保證你連的容器有對應的數據庫
docker?run?-d?--name?sonarqube?-p?9099:9000?-p?9092:9092?--link=dev_mysql:mysql?-e?SONARQUBE_JDBC_USERNAME=app?-e?SONARQUBE_JDBC_PASSWORD=app?-e?SONARQUBE_JDBC_URL="jdbc:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false"?--restart=always?sonarqube:6.7.7-community--link=dev_mysql:mysql ? ? 這個命令我鏈接到了我的mysql容器,dev_mysql是容器的名字,mysql是在SonarQube容器里的別名,所以鏈接數據庫時直接用mysql這個別名就可了.
SONARQUBE_JDBC_USERNAME :數據庫的賬戶
SONARQUBE_JDBC_PASSWORD :數據庫密碼
訪問
安裝好后直接訪問9099端口,登錄的賬戶和密碼默認都是admin.首頁就是這個樣子的.
Jenkins集成SonarQube
Jenkins和SonarQube都是運行在Docker容器里的
下載和安裝插件
直接下載最新版的,然后導入,導入的方法可以看插件導入方法[1]
- 插件下載地址:https://updates.jenkins.io/download/plugins/sonar/
SonarQube生成Token
進入SonarQube管理界面
Administration->Security->Users
然后隨便輸入一個名字,點擊生成,記下Token
添加全局憑證
類型選Secret text,然后Secret和ID輸入框都填入剛才生成的Token
設置SonarQube servers
進入 系統管理->系統設置->SonarQube servers 設置好后點保存
因為我SonarQube和Jenkins安裝在同一臺機器不同的Docker容器里的,所以這里URL直接填SonarQube的Docker容器的IP和端口
安裝SonarQube Scanner
下載壓縮包
- 下載SonarQube Scanner壓縮包:SonarQube Scanner[2]
解壓到Jenkins掛載出來的目錄里
只有解壓到掛載出來的Jenkins的目錄里,Docker容器安裝的Jenkins才能讀取到,我這里是宿主機的/opt/jenkins掛載到了Jenkins容器里的/var/jenkins_home目錄上,所以我只要解壓到宿主機的/opt/jenkins目錄中就可以了
Jenkins配置全局工具
進入 系統管理->全局工具配置->SonarQube Scanner ? ? 找到模塊后點擊新增SonarQube Scanner
SONAR_RUNNER_HOME填你Jenkins這個Docker容器里的路徑
構建一個Maven項目
網上很多教程說要勾上這個選項:
其實這個是可選的,下面有一句話:These variables are useful when configuring a SonarQube analysis using standard build steps such as Maven, Gradle, Ant, and command line scripts.This feature is not needed if you're using "SonarQube Scanner" or "SonarScanner for MSBuild" build steps.
翻譯過來就是:因為我們這里用的就是SonarQube Scanner,所以這個我們是可以不用勾上的,但是勾上也沒影響;
開始構建
- 具體怎么構建項目可以看:Jenkins教程-創建Maven項目[3],這里就不多介紹了
添加Execute SonarQube Scanner
在原來構建的基礎上加上Execute SonarQube Scanner,就可以了
在Analysis properties里填上構建的參數
唯一的項目標識符(必填) sonar.projectKey =tiny-config1
項目元數據(以前是必需的,自SonarQube 6.1起是可選的) sonar.projectName =tiny-config1 sonar.projectVersion = 1.0
源目錄的路徑(必需) sonar.sources = srcDir1,srcDir2
測試源目錄的路徑(可選) sonar.tests = testDir1,testDir2
Java項目編譯類的路徑(可選) sonar.java.binaries = bin
逗號分隔的庫路徑列表(可選) sonar.java.libraries = path / to / library.jar,path / to / classes / dir
附加參數 sonar.my.property =value
保存后就可以正常構建了.
錯誤解決(沒有錯誤可跳過這段)
如果在構建項目的時候,Jenkins控制臺如果報一下錯誤,這是因為SonarQube的Java版本太低造成的
升級SonarQube的Java版本
進入SonarQube的管理臺:Administration->Marketplace->SonarJava
如果你版本沒升級,右邊會有個update按鈕,點擊就可以升級了,升級完后重啟SonarQube;這邊因為我已經升級過了,所以沒有這個按鈕
構建完成后
Jenkins控制臺顯示SUCCESS就表示構建成功了
這時候就可以點擊構建項目的SonarQube直接跳轉到SonarQube控制臺了
這里就可以看到結果了
總結
到這里就可以根據SonarQube的提示去改BUG了.這BUG有點多=_=!.
在搭建過程中,最主要的就是那個SonarQube Scanner這個的安裝了,因為Jenkins都是Docker化的,所以他可以選擇自動安裝,但是我這邊選擇自動安裝卻沒用,所以就自己下載了SonarQube Scnner的包掛載到Jenkins容器里去,然后直接指定SonarQube Scnner的目錄就可以了;
參考資料
[1]插件導入方法: https://mjava.top/jenkins/problem-jenkins-01/
[2]SonarQube Scanner: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
[3]Jenkins教程-創建Maven項目: https://mjava.top/jenkins/build-jenkins-mavne/
總結
以上是生活随笔為你收集整理的docker运行jenkins挂掉_【图文】Jenkins教程集成SonarQube的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: websocket底层处理粘包_Sock
- 下一篇: 苏州宾馆管理也计算机哪个学校好,苏州十大