在 GitHub Actions 矩阵中仅生成一次测试覆盖率报告

sli*_*fty 5 codecov github-actions

我有一个测试套件,想使用 GitHub Actions 以矩阵策略运行。我想为我的测试生成代码覆盖率报告,但仅限于单个矩阵项。

这是我正在处理的操作的副本:

name: test
on: [pull_request, workflow_dispatch]
jobs:
  run_tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14.x, 16.x]
    steps:
      - uses: actions/checkout@v2
        name: Test Node.js ${{ matrix.node-version }}
      - uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm install --production=false
      - run: npm test -- --coverage ## I would prefer to only generate coverage once
      - name: Upload to Codecov     ## I would like to only run this once
        run: |
          curl -Os https://uploader.codecov.io/latest/linux/codecov
          chmod +x codecov
          ./codecov
Run Code Online (Sandbox Code Playgroud)

是否可以仅Upload to Codecov针对一次(可能是最终的或第一次)矩阵策略调用调用该步骤?我希望解决方案是通用的,而不是“如果值为 16.x”,这样将来当我们更新矩阵版本时,我们就不必更新生成报告的版本。

zan*_*war 1

你当然可以:

- name: Upload to Codecov
  if: ${{ matrix.node-version }} == '16.x'
  run: |
      curl -Os https://uploader.codecov.io/latest/linux/codecov
      chmod +x codecov
      ./codecov
Run Code Online (Sandbox Code Playgroud)

或者

- name: Upload to Codecov
  run: |
    if [[ $(node -v) == v16* ]]; then
      curl -Os https://uploader.codecov.io/latest/linux/codecov
      chmod +x codecov
      ./codecov
    fi
Run Code Online (Sandbox Code Playgroud)