Azure Pipeline - 使用 SonarQube Quality Gates 控制部署

问题描述 投票:0回答:2

我将 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'

但我看到它会运行所有步骤,无论质量门的结果如何 - 即使质量门失败,也会显示“测试消息”。

enter image description here

enter image description here

这是我在 SonarQube 中的质量门:

enter image description here

我想仅在“通过”时运行“SonarQube - 发布质量门结果”的后续步骤 - 请告知。

PS - 我正在使用 GitHub 上的 DVWA 应用程序 - https://github.com/digininja/DVWA

sonarqube azure-pipelines cicd
2个回答
0
投票

看起来我们可以调用 REST API 并在状态不正常时抛出异常:

http://SonarFQDN:9000/api/qualitygates/project_status?projectKey=SonarProjectKey


0
投票

只需添加

extraProperties: |
  sonar.qualitygate.wait=true

在您的 SonarQubePrepare 任务的输入中,如此处

所述
© www.soinside.com 2019 - 2024. All rights reserved.