Report Incremental Coverage #344
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Report Incremental Coverage | |
# Runs when the build and test workflow completes. This will run with full | |
# privileges, even if the other workflow doesn't. That allows us to leave PR | |
# comments, when we would not be able to do so otherwise. | |
on: | |
workflow_run: | |
workflows: [Build and Test] | |
types: [completed] | |
jobs: | |
report: | |
if: ${{ github.event.workflow_run.event == 'pull_request' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Compute incremental code coverage | |
id: compute | |
shell: bash | |
env: | |
GITHUB_TOKEN: ${{ secrets.SHAKA_BOT_TOKEN }} | |
# Fetches the coverage data from the run that triggered the report, | |
# parses it, compares it to the changed lines in the PR, and computes | |
# the incremental code coverage. | |
run: | | |
python .github/workflows/compute-incremental-coverage.py \ | |
--repo ${{ github.repository }} \ | |
--run-id ${{ github.event.workflow_run.id }} | |
- name: Report incremental code coverage | |
shell: bash | |
env: | |
GITHUB_TOKEN: ${{ secrets.SHAKA_BOT_TOKEN }} | |
PR_NUMBER: ${{ steps.compute.outputs.pr_number }} | |
MESSAGE: "Incremental code coverage: ${{ steps.compute.outputs.coverage }}" | |
COMMENT_INCLUDES: "Incremental code coverage: " | |
COMMENT_USER: "shaka-bot" | |
run: | | |
# Look for an old comment | |
jq_filter=".[] | select((.user.login == \"$COMMENT_USER\") and (.body | startswith(\"$COMMENT_INCLUDES\"))) | .id" | |
gh api \ | |
/repos/${{ github.repository }}/issues/$PR_NUMBER/comments \ | |
| jq "$jq_filter" > old-comment-id | |
if [[ -z "$(cat old-comment-id)" ]]; then | |
# Create a new comment | |
gh api \ | |
--method POST \ | |
/repos/${{ github.repository }}/issues/$PR_NUMBER/comments \ | |
-F "body=$MESSAGE" | |
else | |
# Update an old comment | |
gh api \ | |
--method PATCH \ | |
/repos/${{ github.repository }}/issues/comments/$(cat old-comment-id) \ | |
-F "body=$MESSAGE" | |
fi |