Github Actions 为测试结果添加质量门

Github Actions add quality gate for test results

提问人:Niranjan 提问时间:8/25/2023 最后编辑:Mustafa ÖzçetinNiranjan 更新时间:8/28/2023 访问量:105

问:

Net core 和 github 操作。我在 Github actions 中运行了管道,并且集成了 Sonarqube。我的要求是,如果代码覆盖率小于 70 或任何指定数量,那么我们不应该允许继续构建过程。构建应该到此为止。所以我目前的代码是

SonarQube_API:
    runs-on: windows-latest
    permissions:
      contents: read
      packages: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
        
      - name: Set up Java for Sonar
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '17'
          
      - name: Get SonarQube
        shell: pwsh
        run: dotnet tool install --global dotnet-sonarscanner

      - name: Get Coverlet.MSBuild
        shell: pwsh
        run: dotnet add package coverlet.msbuild
        working-directory: '.\JK.Test' 

      - name: .NET sonarscanner begin
        shell: pwsh
        run: |
          dotnet sonarscanner begin `
          /k:"JK-Api" `
          /d:sonar.host.url="${{ secrets.MDN_SONARQUBE_HOST }}" `
          /d:sonar.login="${{ secrets.MDN_SONARQUBE_TOKEN }}" `
          /d:sonar.cs.opencover.reportsPaths=".\JK.Test\coverage.opencover.xml" `
          /v:"1.0"
          
        
      - name: build
        shell: pwsh
        run: |
          dotnet restore JK.Test/JK.Test.csproj
          dotnet build JK.Test/JK.Test.csproj --configuration '${{ env.BUILD_CONFIG }}' --no-restore

      - name: dotnet test
        shell: pwsh
        run: |
          dotnet test ".\JK.Test\JK.Test.csproj" `
            --configuration Release `
            --results-directory "${{ github.workspace }}\TestResults" `
            /p:CollectCoverage=true `
        env:
          CollectCoverage: true
          CoverletOutputFormat: opencover

      - name: .NET sonarscanner end
        shell: pwsh
        run: dotnet sonarscanner end /d:sonar.login="${{ secrets.MDN_SONARQUBE_TOKEN }}"

我无法获得任何符合我要求的信息。我的要求是,如果代码覆盖率低于例如70%,那么我希望构建失败,或者进程应该在这里终止。有人可以帮我吗?任何帮助将不胜感激。谢谢

asp.net-core sonarqube github-actions 测试覆盖率 quality-gate

评论

0赞 GuiFalourd 8/25/2023
我建议使用 sonarqube-quality-gate-action。质量门控值在项目的 SonarQube UI 上配置。此操作将发送报告,并等待反馈是否使管道失败。 参考资料
0赞 Niranjan 8/25/2023
嗨@GuiFalourd感谢您的回复。那么我在哪里可以在声纳 qube ui 中设置脱粒机呢?有什么选择吗?谢谢
0赞 GuiFalourd 8/25/2023
在 SonarQube 平台上,如果您有权访问项目页面和项目配置,您应该能够通过这些类型的设置选项来管理质量门。参考
0赞 Niranjan 8/25/2023
@GuiFalourd是的,知道了。我看到有很多质量门定义声纳。我需要将我的要求映射到我的项目的质量门,这将是第一步,对吧?
1赞 Niranjan 8/27/2023
@GuiFalourd请添加上述评论作为答案,我可以关闭它,再次非常感谢

答:

0赞 GuiFalourd 8/28/2023 #1

质量门控值在项目的 SonarQube UI 上配置。

sonarqube-quality-gate-action 发送报告并等待来自平台的反馈是否使管道失败。 参考资料

在 SonarQube 平台上,如果您有权访问项目页面和项目配置,您应该能够通过以下类型的设置选项来管理质量门:

参考

请注意,您还需要在项目中创建一个文件。参考sonar-project.properties

如果同一存储库中有多个项目,则可以添加不同的文件,每个项目一个(理想情况下,每个项目模块包中一个)。sonar-project.properties