From 67f17cc2e421e43b694d7d7ea37ebed8d349f249 Mon Sep 17 00:00:00 2001 From: getzze Date: Mon, 17 Jun 2024 12:21:15 +0100 Subject: [PATCH] update coverage action --- .github/workflows/check.yaml | 55 ++++++++++++++++++++++----------- .github/workflows/coverage.yaml | 35 +++++++++++++++++++++ 2 files changed, 72 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/coverage.yaml diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index ea91bad5..2f3376ca 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -85,27 +85,46 @@ jobs: python -m pip install --upgrade pip pip install -e .[test] - name: run pytest --cov + env: + COVERAGE_FILE: ".coverage.${{ matrix.os }}.${{ matrix.python-version }}" + # Alternatively you can run coverage with the --parallel flag or add + # `parallel = True` in the coverage config file. + # If using pytest-cov, you can also add the `--cov-append` flag + # directly or through PYTEST_ADD_OPTS. run: | - set -e - pytest --cov=./ --cov-report=xml - : .coverage confuses coveralls, remove it - rm -f .coverage - - name: upload coverage data to coveralls - uses: coverallsapp/github-action@v2.2.3 + pytest --cov --cov-report=xml + - name: Store coverage file + uses: actions/upload-artifact@v4 with: - parallel: true - flag-name: python-${{ matrix.python-version }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: upload coverage data to codecov - uses: codecov/codecov-action@v4.1.0 - with: - fail_ci_if_error: true + name: coverage-${{ matrix.os }}-${{ matrix.python-version }} + path: .coverage.${{ matrix.os }}.${{ matrix.python-version }} - coveralls-finish: - needs: test - if: github.event_name != 'schedule' + coverage: + name: Coverage runs-on: ubuntu-latest + needs: test + permissions: + pull-requests: write + contents: write steps: - - uses: coverallsapp/github-action@v2.2.3 + - uses: actions/checkout@v4 + + - uses: actions/download-artifact@v4 + id: download + with: + pattern: coverage-* + merge-multiple: true + + - name: Coverage comment + id: coverage_comment + uses: py-cov-action/python-coverage-comment-action@v3 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + MERGE_COVERAGE_FILES: true + + - name: Store Pull Request comment to be posted + uses: actions/upload-artifact@v4 + if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true' with: - parallel-finished: true + name: python-coverage-comment-action + path: python-coverage-comment-action.txt diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml new file mode 100644 index 00000000..42c8a279 --- /dev/null +++ b/.github/workflows/coverage.yaml @@ -0,0 +1,35 @@ +name: Post coverage comment + +on: + workflow_run: + workflows: ["CI"] + types: + - completed + +jobs: + test: + name: Run tests & display coverage + runs-on: ubuntu-latest + if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' + permissions: + # Gives the action the necessary permissions for publishing new + # comments in pull requests. + pull-requests: write + # Gives the action the necessary permissions for editing existing + # comments (to avoid publishing multiple comments in the same PR) + contents: write + # Gives the action the necessary permissions for looking up the + # workflow that launched this workflow, and download the related + # artifact that contains the comment to be published + actions: read + steps: + # DO NOT run actions/checkout here, for security reasons + # For details, refer to https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ + - name: Post comment + uses: py-cov-action/python-coverage-comment-action@v3 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_PR_RUN_ID: ${{ github.event.workflow_run.id }} + # Update those if you changed the default values: + # COMMENT_ARTIFACT_NAME: python-coverage-comment-action + # COMMENT_FILENAME: python-coverage-comment-action.txt