我将 Azure yaml 管道与 SonarQube 一起使用,以下是我的管道的设置方式:
- checkout: self
- task: SonarQubePrepare@5
displayName: 'SonarQube - Prepare'
inputs:
SonarQube: '$(sonarQubeConnection)'
scannerMode: 'CLI'
configMode: 'manual'
cliProjectKey: $(sonarQubeProject)
cliProjectName: $(sonarQubeProject)
#cliSources: '.'
- script: |
sudo update-alternatives --set php /usr/bin/php$(phpVersion)
sudo update-alternatives --set phar /usr/bin/phar$(phpVersion)
sudo update-alternatives --set phpdbg /usr/bin/phpdbg$(phpVersion)
sudo update-alternatives --set php-cgi /usr/bin/php-cgi$(phpVersion)
sudo update-alternatives --set phar.phar /usr/bin/phar.phar$(phpVersion)
php -version
workingDirectory: $(rootFolder)
displayName: 'Use PHP version $(phpVersion)'
- script: composer install --no-interaction --prefer-dist
workingDirectory: $(rootFolder)
displayName: 'Composer install'
- task: SonarQubeAnalyze@5
displayName: 'SonarQube - Analysis'
- task: SonarQubePublish@5
displayName: 'SonarQube - Publish Quality Gate Result'
inputs:
pollingTimeoutSec: $(sonarQubePollingTimeout)
- script: echo "After code scan..."
displayName: 'Test Message'
但我看到它会运行所有步骤,无论质量门的结果如何 - 即使质量门失败,也会显示“测试消息”。
这是我在 SonarQube 中的质量门:
我想仅在“通过”时运行“SonarQube - 发布质量门结果”的后续步骤 - 请告知。
PS - 我正在使用 GitHub 上的 DVWA 应用程序 - https://github.com/digininja/DVWA
看起来我们可以调用 REST API 并在状态不正常时抛出异常:
http://SonarFQDN:9000/api/qualitygates/project_status?projectKey=SonarProjectKey