<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          超詳細,自動化測試接入Jenkins+Sonar質量門禁實踐

          共 6210字,需瀏覽 13分鐘

           ·

          2021-08-29 11:57

          關注上方“測試開發(fā)技術”,選擇星標,

          干貨技術,第一時間送達!

          大家好,我叫董鑫,一名在測試開發(fā)道路上的新手,是狂師老師全棧測開訓練營上一期的學員。第一階段的學習已然結束,收獲頗多,了解了很多在自己平時測試工作無法接觸到的新知識,比如這次在這里分享的Sonarqube進行靜態(tài)代碼掃描并集成Jenkins的知識,是分享也是自我學習的總結。若有不對的地方,還請各位同行,同學,老師及時指正。

          之前在公眾號也分享過一篇文章:測開新手:從0到1,自動化測試接入Jenkins學習

          1. 什么是SonarQube

          SonarQube是一個開源的代碼質量管理系統,用于檢測代碼中的錯誤,漏洞和代碼規(guī)范,通過插件的機制,

          可以基于現有的Gitlab、Jenkins 集成、以便在項目拉取后進行連續(xù)的代碼檢查。

          優(yōu)點:

          ◆ 支持眾多計算機編程語言

          ◆ 通過插件機制能集成IDE、Jenkins、Git等

          ◆ 內置大量常用代碼檢查規(guī)則

          ◆ 支持定制開發(fā)規(guī)則

          ◆ 可視化界面

          ◆ 支持從可靠性、安全性、可維護性、覆蓋率、重復率等 方面分析項目

          具體的配置及文檔可以訪問下面的鏈接查看:

          https://www.sonarqube.org/downloads/ 
          https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ 

          2. Jenkins插件安裝及配置

          Sonarqube想要與Jenkins集成,需要安裝相應的插件來支持。

          在插件管理中搜索名為Sonarqube Scanner for Jenkins的插件 并安裝。

          安裝好插件后,還需要配置相應的服務和工具信息:

          2.1. 系統設置->SonarQube servers

          • name:可自定義)
          • server url:這個地址就是你sonar服務所在的地址
          • token:在sonar項目中生成的token

          2.2. 全局工具配置》SonarQube Scanner

          建議不采用自動安裝,使用手動下載配置好的sonar scanner

          • name:自定義sonar scanner名稱,建議使用sonar-scanner
          • SONAR_RUNNER_HOME:sonar scanner所在的家目錄

          3. 自由風格的job使用sonar

          3.1 配置代碼倉庫地址:

          3.2 勾選sonarqube 服務并選擇token:

          3.3 在構建中添加Exeute SonarQube Sanner

          這里可以使用兩種方式:

          • a. 直接將sonar-project.properties配置內容寫到 Analysis properties 中
          • b. 將配置好的sonar-project.properties文件放置在代碼目錄中,在 Path to project properties 配置相應的文件名

          建議使用第二種方式來管理我配置的sonar-project.properties文件如下:

          保存好后,就可以來構建了。構建后項目頁面可以直接跳轉到sonarqube服務查看。

          4. pipeline流水線使用sonar

          4.1 構建一個流水線job,流水線pipeline script如下編寫:

          pipeline {
              agent any

              stages {
                  stage('拉取代碼') {
                      steps {
                          git credentialsId: 'gitee', url: 'https://gitee.com/dx0001/work.git'
                      }
                  }
                  stage('靜態(tài)代碼靜態(tài)掃描') {
                      steps {
                          withSonarQubeEnv('sonarqube'){
                              bat "sonar-scanner"
                          }
                      }
                  }
              }    

          注意:這里的名稱是在Jenkins中系統管理--sonarqube servers添加的名稱 同樣的,設置好job后就可以構建進行代碼掃描了。

          5. 接入Sonar質量門禁

          通過上面的job,只是代碼掃描可能無法滿足日常的情況,當掃描的結構不滿足時我可能就不進行后面的步驟了,這樣的情況,我們就需要接入質量門禁的方式來實現。

          5.1 在sonar服務端的質量閥中設置質量門禁,添加要運用的項目

          質量配置->質量閥

          這里可以添加指標來定義通過掃描的條件。然后將設置的質量閥分配給要掃描的項目。

          5.2 在sonar服務端的配置里面添加網絡調用hook

          配置->網絡調用

          這里添加Jenkins調用的地址,用來回調掃描的結果。URL配置為:Jenkins地址+/sonarqube-webhook

          5.3 流水線改造

          pipeline {
              agent any

              stages {
                  stage('拉取代碼') {
                      steps {
                          git credentialsId: 'gitee', url: 'https://gitee.com/dx0001/work.git'
                      }
                  }
                  stage('靜態(tài)代碼靜態(tài)掃描') {
                      steps {
                          withSonarQubeEnv('sonarqube'){
                              bat "sonar-scanner"
                          }
                      }
                  }
                  stage('檢查結果分析') {
                      steps {
                          script{
                              timeout(5){
                                  def qg=waitForQualityGate()
                                  echo "結果狀態(tài):${qg.status}"
                                  if(qg.status!='OK')
                                      error '未達到代碼門禁要求!'
                              }
                          }
                      }
                  }
              }
          }

          在上面的流水線的job上增加一個“檢查結果分析”的步驟,使用waitForQualityDate()的方法來獲取掃描是否通過質量閥的狀態(tài)值。最后使用if條件來判斷,不通過時則使用“error”來中斷流程,實現質量門禁的功能。

          6. 小結

          此次分享就到這里了,更多的是自我知識沉淀的過程,第一階段的學習雖已結束,但對于我更多的是開始,很多的知識需要自己動手搭環(huán)境來實踐,我很享受這個過程。將一個個知識落實,弄清楚,是一件令我非常高興的事情。接觸并學習更多測試開發(fā)的知識,在測試的道路上越走越寬,越走越遠,為此,奮力前進!


          如果覺得有用,點個好看朋友圈轉發(fā)分享一下就行。


          PS: 由狂師老師授課主講的「全棧測試開發(fā)技能訓練營」本周六正式開課,課程內容非常值得推薦!課程大綱:重磅消息 | 2021年最新全棧測試開發(fā)技能實戰(zhàn)指南(第2期)


          推薦閱讀
          官宣了,測試大神必備的"三把利劍"!

          月薪40K+銀行測試經理,自動化測試實踐經驗分享

          聊一聊,接口自動化測試需要驗證數據庫嗎?

          重磅消息 | 2021年最新全棧測試開發(fā)技能實戰(zhàn)指南(第2期)


          END

          所有原創(chuàng)文章
          第一時間發(fā)布至此公眾號「測試開發(fā)技術」

          長按二維碼/微信掃碼  添加作者


          回復:【百人計劃】

          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂一区在线观看 | 五月丁香爱 | 韩日三级黄色视频 | 天天综合~91 | 飘花影院一区二区 |