日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

持續(xù)集成工具之jenkins+sonarqube做代碼掃描

 路人甲Java 2022-05-30 發(fā)布于北京

  上一篇我們主要聊了下代碼質(zhì)量管理平臺(tái)sonarqube的安裝部署以及它的工作方式做了簡(jiǎn)單的描述和代碼掃描演示;回顧請(qǐng)參考https://www.cnblogs.com/qiuhom-1874/p/13822428.html;今天我們來(lái)聊一下使用持續(xù)集成工具jenkins結(jié)合代碼質(zhì)量管理平臺(tái)sonarqube來(lái)做代碼掃描的相關(guān)配置;

  通過(guò)前面對(duì)jenkins的介紹使用,我們知道jenkins是一款高度插件化的軟件,其擴(kuò)展性非常好;我們需要對(duì)其jenkins賦予某種功能,那么我們直接安裝對(duì)應(yīng)的插件即可;同樣的道理,我們需要jenkins結(jié)合sonarqube來(lái)做代碼質(zhì)量掃描,那么我們就需要讓jenkins知道sonarqube在哪里,通過(guò)jenkins的api調(diào)用,把掃描器掃描的結(jié)果通過(guò)sonarqube放在對(duì)應(yīng)的數(shù)據(jù)庫(kù)中;這樣一來(lái),我們?cè)趫?zhí)行jenkins的任務(wù)時(shí),只需要配置sonar-scanner就好;當(dāng)然要把jenkins上的sonar-scanner對(duì)代碼的掃描結(jié)果放在指定的sonarqube配置的數(shù)據(jù)庫(kù)中,我們首先要在jenkins上安裝對(duì)sonarqube支持的插件;其次sonarqube和掃描器sonar-scanner是可以不在同一主機(jī)的;結(jié)合sonarqube和掃描器sonar-scanner的工作邏輯,掃描器只需要配置連接sonarqube的相關(guān)地址以及對(duì)應(yīng)項(xiàng)目的相關(guān)屬性,然后掃描器就可以正常工作了;我們可以理解為一個(gè)sonarqube平臺(tái)對(duì)應(yīng)多臺(tái)server上的sonar-scanner;只要sonar-scanner能夠正常的連接到sonarqube,就能把本地server上的項(xiàng)目代碼掃描結(jié)果寫到sonarqube指定的數(shù)據(jù)庫(kù)中,通過(guò)sonarqube的web平臺(tái)給予展示;好了,介紹了jenkins結(jié)合sonarqube做代碼掃描的工作邏輯后,我們來(lái)看一下具體的配置吧??!

  1、在jenkins上安裝支持sonarqube scanner的插件

  提示:安裝好sonarqube scanner插件后,重啟jenkins讓其插件生效;

  2、配置sonarqube scanner關(guān)聯(lián)sonarqube server

  提示:在jenkins的系統(tǒng)管理--->系統(tǒng)配置里找到sonarqube servers進(jìn)行配置,把對(duì)應(yīng)的sonarqube server的名稱和地址配置上即可,這里的名稱是你標(biāo)識(shí)sonarqube server的字符,可以是任意一個(gè)合法的名稱;

  3、配置jenkins關(guān)聯(lián)sonarqube scanner

  提示:在jenkins的系統(tǒng)管理--->系統(tǒng)全局工具配置里找到sonarqube sanner進(jìn)行配置;如果jenkins所在server上沒(méi)有手動(dòng)安裝的有sonarqube scanner,那么我們可以把自動(dòng)安裝勾選上,然后給它起一個(gè)名稱,選擇對(duì)應(yīng)的版本后,點(diǎn)擊應(yīng)用,jenkins會(huì)自動(dòng)幫我們把對(duì)應(yīng)版本的sonarqube scanner安裝上;如果本地有sonarqube scanner,我們可以不讓jenkins幫我們自動(dòng)安裝,我們只需要指定sonarqube scanner的安裝位置即可;如下

  提示:我這里在jenkins上是沒(méi)有手動(dòng)安裝sonarqube-scanner,所以我們指定的目錄當(dāng)然也是不存在的;如果本地安裝的有,指定其安裝目錄和對(duì)應(yīng)給sonarqube-scanner起的名稱即可;以上方式選擇其中一種就好;配置好以后,點(diǎn)擊應(yīng)用;

  4、在jenkins的任務(wù)中配置項(xiàng)目進(jìn)行掃描

  4.1、在gitlab上新建一個(gè)空項(xiàng)目,然后復(fù)制其克隆地址

  4.2、將其空項(xiàng)目克隆到本地

[root@node04 ~]# ll
total 6640
drwxr-xr-x 4 root root     103 Jul 25  2016 sonar-examples-master
-rw-r--r-- 1 root root 6796222 Aug 20  2019 sonar-examples-master.zip
[root@node04 ~]# git clone git@192.168.0.46:test-app/test-app.git
Cloning into 'test-app'...
warning: You appear to have cloned an empty repository.
[root@node04 ~]# ll
total 6640
drwxr-xr-x 4 root root     103 Jul 25  2016 sonar-examples-master
-rw-r--r-- 1 root root 6796222 Aug 20  2019 sonar-examples-master.zip
drwxr-xr-x 3 root root      18 Oct 17 16:53 test-app
[root@node04 ~]# cd test-app/
[root@node04 test-app]# 

  3、將項(xiàng)目代碼上傳到服務(wù)器并放置到克隆的本地目錄中,然后提交到gitlab

[root@node04 test-app]# ll
total 0
[root@node04 test-app]# cp -r /root/sonar-examples-master/projects/languages/python/python-sonar-runner/* .
[root@node04 test-app]# ll
total 12
-rw-r--r-- 1 root root 461 Oct 17 16:54 README.md
-rw-r--r-- 1 root root 338 Oct 17 16:54 sonar-project.properties
drwxr-xr-x 5 root root  93 Oct 17 16:54 src
-rw-r--r-- 1 root root 290 Oct 17 16:54 validation.txt
[root@node04 test-app]# git add .
[root@node04 test-app]# git config --add user.name admin
[root@node04 test-app]# git config --add user.email admin@admin.com
[root@node04 test-app]# git commit -m 'this is test demo'  
[master (root-commit) b795d85] this is test demo
 12 files changed, 526 insertions(+)
 create mode 100644 README.md
 create mode 100644 sonar-project.properties
 create mode 100644 src/__init__.py
 create mode 100644 src/badfortune.py
 create mode 100644 src/directory/file_in_directory.py
 create mode 100644 src/package/__init__.py
 create mode 100644 src/package/file_in_package.py
 create mode 100644 src/samples/__init__.py
 create mode 100644 src/samples/fortune.py
 create mode 100644 src/samples/letters.py
 create mode 100644 src/samples/strfile.py
 create mode 100644 validation.txt
[root@node04 test-app]# git log
commit b795d851eadf7b2abb8c015319a2b8ea0c260d4b
Author: admin <admin@admin.com>
Date:   Sat Oct 17 16:55:52 2020 +0800

    this is test demo
[root@node04 test-app]# git remote -v
origin  git@192.168.0.46:test-app/test-app.git (fetch)
origin  git@192.168.0.46:test-app/test-app.git (push)
[root@node04 test-app]# git push origin master
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (15/15), 8.28 KiB | 0 bytes/s, done.
Total 15 (delta 0), reused 0 (delta 0)
To git@192.168.0.46:test-app/test-app.git
 * [new branch]      master -> master
[root@node04 test-app]# 

  驗(yàn)證:到gitlab上查看,是否將項(xiàng)目提交到倉(cāng)庫(kù)了?

  提示:可以看到現(xiàn)在gitlab對(duì)應(yīng)倉(cāng)庫(kù)就有了對(duì)應(yīng)的項(xiàng)目文件;

  在jenkins上配置任務(wù),將其我們上傳的代碼從gitlab上拉取下來(lái),然后做代碼掃描

  提示:這里我們創(chuàng)建任務(wù)時(shí),可以在源碼管理寫上對(duì)應(yīng)項(xiàng)目的克隆地址,以及憑證;上面配置表示在jenkins執(zhí)行這個(gè)任務(wù)時(shí),它會(huì)到我們指定的倉(cāng)庫(kù)地址將其代碼拖到本地;

  提示:這里主要是配置代碼掃描器的配置,告訴sonarscanner在哪里去找源碼,對(duì)應(yīng)源碼是什么語(yǔ)言編寫的(寫源碼后綴名稱,不能寫python),對(duì)應(yīng)源碼的編碼;到此代碼掃描就配置完了,后續(xù)如果還有其他構(gòu)建操作,我們可以繼續(xù)添加對(duì)應(yīng)的構(gòu)建模塊;最后都編輯好了后,點(diǎn)擊應(yīng)用即可;

  驗(yàn)證:執(zhí)行jenkins任務(wù),看看是否能夠?qū)⒋a從gitlab上拉去下來(lái)進(jìn)行代碼掃描?

  提示:構(gòu)建完成沒(méi)有報(bào)錯(cuò),前面的小圓圈是藍(lán)色的,有錯(cuò)誤就是紅色的;我們?cè)跇?gòu)建項(xiàng)目中只是配置了掃描代碼,其中里面調(diào)用了sonarqube scanner插件;從上面的結(jié)果可以看到,比之前構(gòu)建項(xiàng)目時(shí),后面多了一個(gè)sonar的圖標(biāo),我們可以點(diǎn)擊此圖標(biāo)跳轉(zhuǎn)到對(duì)應(yīng)的sonarqube上查看掃描的結(jié)果;

  查看構(gòu)建日志

  提示:從構(gòu)建日志中我們能夠清楚的看到先是克隆代碼到本地目錄,然后再是使用jenkins插件下載sonarqube_scanner,然后sonar-scanner進(jìn)行代碼掃描;

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多