日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jenkins+sonar+ios 基于object C(object-c-plugin-snapshot免费版)搭建

發布時間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jenkins+sonar+ios 基于object C(object-c-plugin-snapshot免费版)搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、簡單介紹原理

2、sonar環境配置

3、sonar-runner環境配置

4、集成執行生成可視化報表

1、介紹原理

開題提過,我之前的oclint是通過jenkins 調度執行在我們配置的幾臺mac slave上的,oclint生成的報告是pmd格式,通過jenkins的插件Pbulish PMD analysis results解析和展示。
但是當開發想看哪些issue的時候,就會很麻煩,不是很直觀,需要點擊到jenkins的job里面去查找。為了方便開發小伙伴,查閱資料知道了sonar。
網上對sonar有非常詳細的介紹,我就不贅述,我理解的sonar就是類似于我用flask寫的一個服務端,可以用來存儲數據和展示數據,sonar-runner就類似于requests的一個post請求,它將oclint檢查生成的PMD格式的XML文件發送給sonar,然后sonar將接收的數據存入
mysql或者其他類型的數據庫,并且展示。

對于jenkins觸發的job我是通過jenkins 中gerrit的觸發機制,當開發change-merge到開發分支的時候觸發job執行。

2、sonar環境配置

sonar環境配置分兩步,sonar和mysql.
【1】sonar
在這里我在mac和linux環境都嘗試搭建了sonar。

sonar下載地址為:https://www.sonarqube.org/downloads/

下載好之后,是一個.tgz壓縮文件,解壓之后,這里linux和mac配置環境是一致的沒有什么不同,放在任意文件夾位置都可以。加入放在/opt/sonar/下面。

啟動sonar服務命令為:

## linux啟動 ./bin/linux-x86-4/sonar.sh start## mac啟動 ./bin/macosx-universal-64/sonar.sh start

啟動之前,我更改了conf/sonar.properties,由于我在linux上啟動了幾個flask服務已經占用了很多端口。
我更改了這些項目:

sonar.web.host=0.0.0.0sonar.web.port=9007sonar.search.port=9011

然后分別執行啟動命令,打開http://127.0.0.1:9007,就可以正常進入sonar界面。但是在最下面有紅字提示那是因為沒有連接數據庫。

這里我更改sonar.search.port是因為,我發現默認端口9001已經被占用,服務啟動不起來,報錯提示在logs/ce.log看出來的。

【2】mysql
這里mac和linux有稍微的區別。
安裝命令:

## linux 我推薦rpm格式安裝,且安裝mysql 5.7版本1、https://dev.mysql.com/downloads/repo/apt/ 下載dev包 2、轉存linux,然后執行 sudo dpkg -i mysql-apt-config_0.8.3-1_all.deb groupadd mysql useradd -r -g mysql mysql sudo apt-get install libaio-dev## mac安裝mysql brew install mysql

mysql安裝好之后,啟動命令:

## linux sudo /etc/init.d/mysql start## mac mysql.server start

通過默認root用戶登錄mysql,mysql -uroot -proot,登錄之后。
需要新增sonar database以及sonar用戶。

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'sonar' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; FLUSH PRIVILEGES;

成功之后,重啟一下mysql服務。

更改conf/sonar.properties數據庫的配置,讓它生效。

sonar.jdbc.username=sonar sonar.jdbc.password=sonarsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

再重啟一下sonar服務,然后重新登錄http://127.0.0.1:9007,正常啟動,則可以看到頁面最底端的紅字預警提示已經沒有了,其實也可以通過logs文件夾下,日志查看。

小貼士,這里我為什么強調使用mysql 5.7的版本,是因為我在linux下安裝第一次是用sudo apt-get install mysql-server,導致安裝的5.5的版本,和sonar 6.2不匹配。

3、sonar-runner配置

sonar-runner類似于一個發請求的命令,它應該放置于執行oclint的mac slave上。

sonar-runner下載路徑:http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip

解壓縮之后,環境變量可配置可不配置,我建議不要配置bash_profile,因為要使得bash_profile生效,jenkins需要跟slave斷開一下再重連,才能生效。這對于持續集成集群服務來說,是不合理的。

要使得sonar-runner能有效使用,需要配置sonar-runner/conf/sonar-runner.properties

sonar.host.url=http://localhost:9007 sonar.sourceEncoding=UTF-8 sonar.login=admin sonar.password=admin

這個時候需要在命令行驗證一下,假設sonar-runner放置于opt下,opt/sonar-runner/bin/sonar-runner,提示:

SonarQube Runner 2.4 Java 1.8.0_111 Oracle Corporation (64-bit) Mac OS X 10.12.3 x86_64 INFO: Runner configuration file: /Users/huami/opt/sonar-runner/conf/sonar-runner.properties INFO: Project configuration file: NONE INFO: Default locale: "zh_CN", source code encoding: "UTF-8"

說明sonar-runner已經配置好。

4、集成執行生成可視化報表

【1】在執行sonar-runner之前,需要在服務端sonar/extensions/plugins/下加載一個oc檢查jar包插件。
sonar-objective-c-plugin-0.5.0-SNAPSHOT.jar插件下載地址:https://github.com/ChenTF/iOS-sonarShell

下載好之后,將其轉存到sonar/extensions/plugins/,并重啟一下sonar服務。

【2】需要新建生成或者在下載的包里面,將sonar-project.properties放入iOS項目主目錄,最后我的sonar-project.properties為:

########################## # Required configuration # ##########################sonar.projectKey=MiFit sonar.projectName=MiFit sonar.projectVersion=1.0 sonar.language=objectivec# Project description sonar.projectDescription=Fake description# Path to source directories 工程文件目錄 sonar.sources=MiFit# Xcode project configuration (.xcodeproj or .xcworkspace) # -> If you have a project: configure only sonar.objectivec.project # -> If you have a workspace: configure sonar.objectivec.workspace and sonar.objectivec.project # and use the later to specify which project(s) to include in the analysis (comma separated list) sonar.objectivec.project=MiFit.xcodeproj sonar.objectivec.workspace=MiFit.xcworkspace# Scheme to build your application sonar.objectivec.appScheme=MiFit # Scheme to build and run your tests (comment following line of you don't have any tests)########################## # Optional configuration # ########################### Encoding of the source code sonar.sourceEncoding=UTF-8sonar.objectivec.oclint.reportPath=lint.xmlsonar.scm.enabled=falsesonar.host.url=http://x.x.x.x:9007

萬事俱備,只欠東風。

【3】我已經在iOS項目目錄下生成了oclint執行之后的PMD格式的lint.xml。
為了驗證sonar搭建的沒有問題,直接cd到項目根目錄下去執行sonar-runner將lint.xml結果信息發送到sonar服務。

假如前面都正常配置的話,此時執行sonar-runner,log如果是這樣的

Analysis report uploaded in 2489ms 11:47:24.701 INFO - ANALYSIS SUCCESSFUL, you can browse http://x.x.x.x:9007/dashboard/index/MiFit 11:47:24.702 INFO - Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report 11:47:24.702 INFO - More about the report processing at http://x.x.x.x:9007/api/ce/task?id=AVrK7MT-YTb445TpRSn7 11:47:25.577 INFO - Task total time: 24.425 s INFO: ------------------------------------------------------------------------ INFO: EXECUTION SUCCESS INFO: ------------------------------------------------------------------------ Total time: 32.521s Final Memory: 23M/777M

可以去http://192.168.1.101:9007看看項目執行的記錄有沒有正確上傳了。

我沒有加入自己定義的規則,那才是靜態代碼監控平臺最重要的地方,等我實踐好,再分享吧,我現在只是把環境配置好了。

寫的不好的地方,請大家多指正。

總結

以上是生活随笔為你收集整理的jenkins+sonar+ios 基于object C(object-c-plugin-snapshot免费版)搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。