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 的目錄。
- C# 請排除
sonar.scanner.scanAll=trueWeb 如果是混合式專案,例如包含 C# 與 Vue,在scannerMode: dotnet裡的參數多指定分析器為all,那麼 SQ 就會依 Scan 到的檔案類型去跑對應的分析器。
另外可以在管理後台的 Project Settings 找到你之前針對專案的設定的內容,也可以一併轉移至 CD 組態中。對應的參數與內容,請自行參考 Sonarqube Portal 裡自己的專案設定。
參考資料:
- https://docs.sonarsource.com/sonarqube-community-build/project-administration/adjusting-analysis/setting-analysis-scope/setting-initial-scope
- https://docs.sonarsource.com/sonarqube-community-build/devops-platform-integration/azure-devops-integration/adding-analysis-to-pipeline/js-ts-go-python-php
- https://docs.sonarsource.com/sonarqube-community-build/project-administration/adjusting-analysis/setting-analysis-scope/defining-matching-patterns (關於路徑條件,可以參考依這一篇)
- https://docs.sonarsource.com/sonarqube-community-build/devops-platform-integration/azure-devops-integration/adding-analysis-to-pipeline/dotnet-project#yaml-file-example
- https://docs.sonarsource.com/sonarqube-community-build/devops-platform-integration/azure-devops-integration/adding-analysis-to-pipeline/various-features
- https://docs.sonarsource.com/sonarqube-server/analyzing-source-code/languages/javascript-typescript-css
- https://docs.sonarsource.com/sonarqube-server/analyzing-source-code/analysis-parameters/parameters-not-settable-in-ui
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。