Sonarqube v25 之 Azure DevOps 的 CI 參數

Sonarqube v25 之 Azure DevOps 的 CI 參數

目前升級 Sonarqube v25 之後,一些 Azure DevOps 的 CI 需要做對應的修正。

以下用 Yaml 為例,如果你的 CI 是用 UI 界面只是填入位置不同。

修改 Task

將下列 Task Version 由 @6 改為 @8

# v6
xxx.SonarQubePrepare@6
xxx.SonarQubeAnalyze@6
xxx.SonarQubePublish@6
# v8
xxx.SonarQubePrepare@8
xxx.SonarQubeAnalyze@8
xxx.SonarQubePublish@8

修改參數

修改 SonarQubePrepare@8 的組態內容:

  - task: SonarSource.sonarqube.15B84CA1-B62F-4A2A-A403-89B77A063157.SonarQubePrepare@8
    displayName: 'Prepare analysis on SonarQube'
    inputs:
      SonarQube: {YourSQServer}
      scannerMode: dotnet
      ProjectKey: {YourKey}
      ProjectName: '{YouName}'
      ProjectVersion: '$(Build.BuildNumber)'
      continueOnError: true
      extraProperties: |
        sonar.scm.disabled=true
        sonar.qualitygate.wait=true
        sonar.cs.roslyn.ignoreIssues=false
        sonar.projectBaseDir=$(Build.SourcesDirectory)
        sonar.inclusions=**/PersimmonB2B.CSVDataTool/**/*,**/PersimmonB2B.Services/**/*
        sonar.exclusions=**/obj/**,**/bin/**,**/*.Tests**
  • scannerMode 請指定為 dotnet (UI 請選 Integrate with .NET
  • extraProperties 為調整的重心,Sonarqube v25 可以透過 extraProperties 做整個專案的細部調整。(UI 位於 Advanced
    • sonar.scm.disabled 減少 SCM 的警告。
    • sonar.cs.roslyn.ignoreIssues 預設為 true,因此設為 false 以匯入 Roslyn 分析報告。
    • sonar.inclusions 指定 Scan 要包含的目錄,請依 Repos 結構填入對應的路徑。
      • **/{ProjectFolder}/**/* 意思是,不論那一層開始,符合 {ProjectFolder} 之下所有檔案都要 Scan。
    • sonar.exclusions 指定 Scan 要排除的目錄。
      • C# 請排除 **/obj/**,**/bin/** 兩個編譯用目錄。(多個路徑用 , 分隔)
      • Web 請排除 **/node_modules/** nodejs 的目錄。
    • sonar.scanner.scanAll=true Web 如果是混合式專案,例如包含 C# 與 Vue,在 scannerMode: dotnet 裡的參數多指定分析器為 all,那麼 SQ 就會依 Scan 到的檔案類型去跑對應的分析器。

另外可以在管理後台的 Project Settings 找到你之前針對專案的設定的內容,也可以一併轉移至 CD 組態中。對應的參數與內容,請自行參考 Sonarqube Portal 裡自己的專案設定。

參考資料:

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。