系列目錄 <https://www.cnblogs.com/tylerzhou/p/11204826.html>
Sonarqube結(jié)合Jenkins與常見問題
我們引入sonarqube組件的最終目的是要為整個(gè)Ci環(huán)境服務(wù)的,如果不能集成于當(dāng)前的Jenkins
CI,那么我們做的很多關(guān)于sonarqube的工作都將是徒勞的.然而這一點(diǎn)幾乎不用擔(dān)心,因?yàn)槲覀儚那懊娴闹v解可以看到我們的構(gòu)建操作都是通過命令行來進(jìn)進(jìn)行的,從這一點(diǎn)來看應(yīng)該是可以無縫的集成到j(luò)enkins環(huán)境,然而我們把命令原封搬到Jenkins上發(fā)現(xiàn),事情并不像想像的那么簡單,而是有各種各樣的坑存在.
我們運(yùn)行以下前面章節(jié)運(yùn)行過的代碼,看看會(huì)出現(xiàn)什么問題:
MSBuild.SonarQube.Runner.exe begin /k:"mytest" /n:"mytest" /v:"v8.0"
/d:sonar.cs.opencover.reportsPaths="%CD%\testcover.xml" msbuild.exe
"E:\personalproject\newTest2018\ConsoleApp1\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe"
-output:"%CD%\testcover.xml" -register:user -target:"C:\Program Files
(x86)\Microsoft Visual
Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
-targetargs:"%CD%\bin\Debug\NunitTest.dll" MSBuild.SonarQube.Runner.exe end
運(yùn)行以上命令根據(jù)可能會(huì)出現(xiàn)以下問題:
問題1 命令找不到
可能會(huì)有童鞋遇到MSBuild.SonarQube.Runner.exe is not recognized as an internal or
external command,operable program or batch file.
當(dāng)然可能有些童鞋不會(huì)遇到這個(gè)問題,這主要取決于環(huán)境變量path的設(shè)置
可以看到這個(gè)界面有兩個(gè)地方可以設(shè)置path,上面是用戶級別的,下面是系統(tǒng)級別的,如果你是在上面用戶級別設(shè)置的path,則Jenkins無法讀取到(這里僅僅是指默認(rèn)情況下)當(dāng)前用戶變量的,因?yàn)镴enkins執(zhí)行用戶和當(dāng)前用戶并不是同一個(gè)用戶.(大家可以在jenkins里執(zhí)行whoami來看下jenkins里的執(zhí)行用戶).這里有兩個(gè)解決辦法:第一種辦法就是指定可執(zhí)行文件
MSBuild.SonarQube.Runner.exe
的完整路徑(其它可執(zhí)行文件也一樣),第二,把環(huán)境變量添加到全局配置里.加到全局變量里雖然方便了,但是全局變量的總長度是有限制的,如果配置的過多很容易超出限制,還有一點(diǎn)問題就是像mono在安裝的時(shí)候全自動(dòng)添加很多環(huán)境變量,如果用戶裝了mono,使用全局的msbuild編譯有時(shí)候會(huì)造成編譯的結(jié)果和指定完整路徑的編譯結(jié)果不一致,這一點(diǎn)請用戶自己斟酌.
問題2 相對路徑問題
以上代碼中我們使用了%CD%,我們前面的示例都是在工程目錄下執(zhí)行的,%CD%即為當(dāng)前目錄,而在Jenkins環(huán)境中,當(dāng)前目錄是
Jenkins\workspace\項(xiàng)目名,如果處理不當(dāng),會(huì)導(dǎo)致編譯錯(cuò)誤.
第二段msbuild.exe
也是一樣問題,它必須在工程目錄下的時(shí)候才不需要指定要編譯的項(xiàng)目名,如果當(dāng)前目錄下沒有sln或者csproj文件,則需要顯式指定項(xiàng)項(xiàng)目文件的完整路徑如
msbuild.exe
"E:\personalproject\newTest2018\ConsoleApp1\NunitTest\NunitTest.csproj"
問題3 路徑是否需要加引號
這其實(shí)是一個(gè)常見的問題,我們會(huì)發(fā)現(xiàn)有時(shí)候路徑不帶引號不會(huì)出現(xiàn)問題,有時(shí)候會(huì)出現(xiàn)問題,就筆者的經(jīng)驗(yàn),如果路徑中沒有空格則不用加引號,如果有則需要加引號.因此為了避免不必要的麻煩,建議的最佳實(shí)踐是路徑都加上引號.
問題4 默認(rèn)Jenkins賬戶無法編譯Sonarqube項(xiàng)目
我們把所有的問題都解決完之后,會(huì)發(fā)現(xiàn)Jenkins仍然構(gòu)建失敗,提示信息如下Running the Scanner for MSBuild under
Local System or Network Service account is not supported. Please, use a local
or domain user account instead.
以上錯(cuò)誤明確提出,Sonarqube MSbuild 掃描器不支持本地系統(tǒng)賬戶或者網(wǎng)絡(luò)服務(wù)賬戶,需要使用普通賬戶登陸.下面我們講一下如何處理這個(gè)問題.
我們打開windows cmd執(zhí)行whoami查看一下當(dāng)前用戶:
右擊我的電腦選擇管理然后從管理界面里面找到服務(wù)或者在cmd界面輸入services.msc來打開服務(wù)管理界面,從服務(wù)管理界面找到j(luò)enkins服務(wù),右鍵點(diǎn)擊
屬性,在彈出的對話框中切換到登陸標(biāo)簽,如果沒有登陸則是本地?cái)?我們選擇此賬戶
然后輸入賬戶和密碼點(diǎn)擊確定.
完成以上操作以后重新啟動(dòng)jenkins服務(wù)然后再執(zhí)行腳本,就可以編譯通過了.
熱門工具 換一換
感谢您访问我们的网站,您可能还对以下资源感兴趣:
调教肉文小说-国产成本人片免费av-空姐av种子无码-在线观看免费午夜视频-综合久久精品激情-国产成人丝袜视频在线观看软件-大芭区三区四区无码-啊啊好爽啊啊插啊用力啊啊-wanch视频网-国产精品成人a免费观看