“Could not fetch metrics” error while publishing quality gat

Good morning.

I created an old topic with this problem, I was asked to perform the update as suggested but the error still persists, I would like to know if there is another solution or approach to perform. Attached is the error.

Hey again!

Can you publish how your Azure Pipelines is configured? It would be best if you can share a full azure-pipelines.yml file here.

# Setting parameters
# Etapas do pipeline
- name: stepList
  type: stepList 
  default: []
# Main folder 
- name: rootFolder
  type: string
  default: ""
# Deploy folder  
- name: deployFolder
  type: string  
  default: ""
# Default type of generated artifact
- name: packageExtension
  type: string  
  default: "war"
# Declaration of global variables
  # Valida se a branch é a master
  isMaster: $[eq(variables['Build.SourceBranch'], 'refs/heads/master')]
  # Linux image used in the pipeline. Padrão ubuntu-18.04.    
  vmImage: $(vmImage)
# Pipeline steps
  # Perform software quality testing using sonarQube
  - stage: Quality
    dependsOn: []
    # Validates whether the test is done using sonar
    condition: and(succeeded(), and(eq(variables['sonar.scan'], 'true'),eq(variables['sonar_scan_global'], 'true')))
    # actions that must be performed with sonar
      # Call sonarQube
      - job: JobSonarQube
          # agent name
          name: 'POOL_SONAR_CPCS'
        # execution steps
          # sonarQube preparation
          - task: SonarQubePrepare@5
            displayName: 'SonarQube - Preparing analysis configuration'
            # Inputs for execution. Name, type and mode of execution
              SonarQube: 'Sonar Tubarão'
              scannerMode: 'CLI'
              configMode: 'file'
          # Sonar execution script.      
          - script: |
              echo "SonarToken:"
              echo %SONAR_TOKEN%
              echo "BUILD_SOURCEBRANCHNAME:"
              echo %BUILD_SOURCEBRANCHNAME%
              echo "BUILD_VERSION"
              echo "%BUILD_VERSION%"
              echo "BUILD_REASON"
              echo "%BUILD_REASON%"
              echo "System.PullRequest.PullRequestId:"
              echo $(System.PullRequest.PullRequestId)
              echo "System.PullRequest.SourceBranch:"
              echo $(System.PullRequest.SourceBranch)
              echo "System.PullRequest.TargetBranch:"
              echo $(System.PullRequest.TargetBranch)
              SET PATH=%SONAR_HOME%\bin;%PATH%
              SET SONAR_SCANNER_OPTS=-Xmx512m
              if not exist exec mkdir exec
              SET SOURCE_BRANCH=$(System.PullRequest.SourceBranch)
              SET SOURCE_BRANCH=%SOURCE_BRANCH:refs/heads/=%
              echo "SOURCE_BRANCH:"
              echo %SOURCE_BRANCH%
              SET TARGET_BRANCH=$(System.PullRequest.TargetBranch)
              SET TARGET_BRANCH=%TARGET_BRANCH:refs/heads/=%
              echo "TARGET_BRANCH:"
              echo %TARGET_BRANCH%
              ECHO %SONAR_METADATAFILEPATH%             
              IF "%BUILD_REASON%" == "PullRequest" sonar-scanner -X -Dsonar.pullrequest.key=$(System.PullRequest.PullRequestId) -Dsonar.pullrequest.branch=%SOURCE_BRANCH% -Dsonar.pullrequest.base=%TARGET_BRANCH% -Dsonar.projectVersion=%BUILD_VERSION% -Dsonar.scanner.metadataFilePath=%SONAR_METADATAFILEPATH% -Dsonar.qualitygate=cpcs_java -Dsonar.login=$(SONAR_TOKEN)
              IF NOT "%BUILD_REASON%" == "PullRequest" sonar-scanner -X -Dsonar.branch.name=%BUILD_SOURCEBRANCHNAME% -Dsonar.projectVersion=%BUILD_VERSION% -Dsonar.scanner.metadataFilePath=%SONAR_METADATAFILEPATH% -Dsonar.qualitygate=cpcs_java -Dsonar.login=$(SONAR_TOKEN)
            displayName: 'SonarQube - Executando análise de código'
            # USE token created for SONAR
              SONAR_TOKEN: $(SONAR_TOKEN)
          # Results publication phase
          - task: SonarQubePublish@5
            displayName: 'SonarQube - Publishing Quality Gate results'
            # Waiting time for execution
              pollingTimeoutSec: '300'
          # Presents execution. Reads file generated by sonar and presents it in the build process  
          - template: steps/azure-ci-sonar-status-result.yml
  # Application build phase
  - stage: CI
    dependsOn: []
    # Checks if it is a build created by pull request or updating a branch  
    condition: and(succeeded(),ne(variables['Build.Reason'], 'PullRequest'))
    # Build actions
      - job: JobBuild
        # Uses standard Linux image or received through pipeline variables
          vmImage: $(vmImage)
        # Execution steps
        # Removes .git files and directories from the project and compresses project sources
        - bash: rm -rf .git
          displayName: 'Remover diretório(.git)'
        - task: ArchiveFiles@2
          displayName: 'Compactar Fontes do Projeto(src.zip)'
          # Appetizer
            # Points to project folder
            rootFolderOrFile: '$(Agent.BuildDirectory)/s${{parameters.rootFolder}}' 
            # Whether or not to include main folder
            includeRootFolder: false 
            # Type of compression to be done
            archiveType: 'zip' 
            # Compressed file name
            archiveFile: '$(Build.ArtifactStagingDirectory)/src.zip'
        # Run Linux bash
        - task: JavaToolInstaller@0
            versionSpec: '8'
            jdkArchitectureOption: 'x64'
            jdkSourceOption: 'PreInstalled'
        - task: Bash@3
          # Text with action to be performed
          displayName: 'Gerar Arquivo com os Comentários do Check-in(conteudo.txt)'
          # Appetizer
            # bash writing method. 
            targetType: 'inline'
            # Command to be executed 
            script: 'cd $(Build.ArtifactStagingDirectory) && mkdir _doc && printf "%s" "$(build.sourceversionmessage)" >> _doc/conteudo.txt'
        # Download maven 2.0.9
        - script: 'wget http://archive.apache.org/dist/maven/binaries/apache-maven-2.0.9-bin.zip'
          displayName: 'Download Maven(apache-maven-2.0.9)'
        # Extract Maven file   
        - task: ExtractFiles@1
          displayName: 'Descompactar Maven(apache-maven-2.0.9)'
          # input commands 
            # maven file name 
            archiveFilePatterns: 'apache-maven-2.0.9-bin.zip'
            # Destination folder 
            destinationFolder: '$(build.sourcesdirectory)/maven'
        # Give any user execution permission to the maven folder
        - script: 'sudo chmod 777 -R $(build.sourcesdirectory)/maven/apache-maven-2.0.9/*'
          displayName: 'Conceder Permisão de Execução Maven(apache-maven-2.0.9)'
        # List sources and run application build
        - script: 'ls -fla $(Build.SourcesDirectory)'
          displayName: 'Listar os fontes'
        - bash: echo "Executando passos do build da aplicação"
          displayName: 'Executando passos do build da aplicação'
        # cycles through steplist parameters and executes the application file.
        - ${{ each step in parameters.stepList }}:
          - ${{ each pair in step }}:
              ${{ pair.key }}: ${{ pair.value }}  
        # Final Success Messages
        - bash: echo "Finalizando passos do build da Aplicação" 
          displayName: 'Finalizando passos do build da Aplicação'
        # Copy build file to azure artifacts folder
        - task: CopyFiles@1
          displayName: 'Copiando os Arquivos para: $(build.artifactstagingdirectory)'
          # Input Actions
            # Folder where the build file was generated
            SourceFolder: '$(system.defaultworkingdirectory)${{parameters.rootFolder}}${{parameters.deployFolder}}'
            # Parameter-based content packageExtension
            Contents: '**/*.${{parameters.packageExtension}}'
            #  Folder that will receive the build file
            TargetFolder: '$(build.artifactstagingdirectory)'
        # Copy file to folder
        - task: PublishPipelineArtifact@1
          displayName: 'Copiando os Arquivos para pasta Drop'
            artifactType: 'pipeline'
            artifactName: 'drop'
            targetPath: '$(build.artifactstagingdirectory)'

Hey there.

This looks remarkably complicated. Why are you trying to set these things manually?

Why not instead use the SonarQubeAnalyze step? See the documentation on Analyzing projects with Azure Pipelines

Some systems we use detect these variables manually… and the problem above?


2023-09-12T11:55:50.7747816Z ##[debug]SONARQUBE_ENDPOINT=***
2023-09-12T11:55:50.7749438Z ##[debug][SQ] API GET: ‘/api/metrics/search’ with query “{“f”:“name”,“ps”:500}”
2023-09-12T11:55:50.8112429Z ##[debug]Response: 401 Body: “undefined”
2023-09-12T11:55:50.8116640Z ##[debug][SQ] API GET ‘/api/metrics/search’ failed, status code was: 401
2023-09-12T11:55:50.8154563Z ##[error][SQ] Could not fetch metrics
2023-09-12T11:55:50.8164402Z ##[debug]Processed: ##vso[task.issue type=error;][SQ] Could not fetch metrics
2023-09-12T11:55:50.8169986Z ##[error][SQ] API GET ‘/api/metrics/search’ failed, status code was: 401
2023-09-12T11:55:50.8170497Z ##[debug]Processed: ##vso[task.issue type=error;][SQ] API GET ‘/api/metrics/search’ failed, status code was: 401
2023-09-12T11:55:50.8252517Z ##[debug]pollingTimeoutSec=300
2023-09-12T11:55:50.8253933Z ##[debug][SQ] API GET: ‘/api/server/version’ with query “undefined”
2023-09-12T11:55:50.8291540Z ##[debug]Response: 200 Body: “”

The SonarCloudPublish task is only meant to be used after the SonarCloudAnalyze step.

Which comes back to the question:


It looks like you didn’t perform the upgrade you said you did. :confused: