0

我非常接近这项工作,但我不知道足够的 yaml-foo 来查看解决方案。

很明显,没有办法告诉 Coverlet ( https://github.com/coverlet-coverage/coverlet ) 不要在结果路径中使用随机 GUID:

图片 (来自https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/VSTestIntegration.md)。

我正在做一堆代码覆盖率报告,作为其中的一部分,我想使用https://github.com/simon-k/dotnet-code-coverage-badge为项目生成一个 GitHub 徽章。

我的构建工作流程:

name: Build Terminal.Gui with .NET Core

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Setup .NET Core
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 5.0.100

    - name: Install dependencies
      run: dotnet restore

    - name: Build
      run: dotnet build --configuration Release --no-restore

    - name: Test
      run: dotnet test --no-restore --verbosity normal --collect:"XPlat Code Coverage"  --settings UnitTests/coverlet.runsettings

    - name: Create Test Coverage Badge
      uses: simon-k/dotnet-code-coverage-badge@v1.0.0
      id: create_coverage_badge
      with:
        label: Unit Test Coverage
        color: brightgreen
        path: UnitTest/TestResults/<uuid>/coverage.opencover.xml
        gist-filename: code-coverage.json
        # https://gist.github.com/migueldeicaza/90ef67a684cb71db1817921a970f8d27
        gist-id: 90ef67a684cb71db1817921a970f8d27
        gist-auth-token: ${{ secrets.GIST_AUTH_TOKEN }}  

徽章工具需要 opencover.xml 文件的路径。我可以很好地生成文件,但它最终在一个文件夹UnitTests/TestResults/<UUID>/coverage.opencover.xml中。

根据上述内容,我不能(显然)改变 VSTest 的行为。所以我需要想办法将输出中的 UUID 捕获到变量中并在path:.

那个 UUID 就在测试运行结果中,我只需要以某种方式抓住它:

图片

这可能吗?或者,是否有某种方法可以使用通配符执行复制命令,将其内容复制UnitTest/TestResults/*/到某个确定性的地方?

4

1 回答 1

0

我已经想通了,并且正在回答我自己的问题,以防其他 YAML 菜鸟有类似的问题:

只需使用 Linux mv 命令移动文件:

- name: Test
      run: |
        dotnet test --no-restore --verbosity normal --collect:"XPlat Code Coverage"  --settings UnitTests/coverlet.runsettings
        mv -v UnitTests/TestResults/*/*.* UnitTests/TestResults/

    - name: Create Test Coverage Badge
      uses: simon-k/dotnet-code-coverage-badge@v1.0.0
      id: create_coverage_badge
      with:
        label: Unit Test Coverage
        color: brightgreen
        path: UnitTests/TestResults/coverage.opencover.xml
        gist-filename: code-coverage.json
        # https://gist.github.com/migueldeicaza/90ef67a684cb71db1817921a970f8d27
        gist-id: 90ef67a684cb71db1817921a970f8d27
        gist-auth-token: ${{ secrets.GIST_AUTH_TOKEN }}   
于 2021-04-23T19:57:29.143 回答