Skip to content

Publish test and coverage results #1273

Publish test and coverage results

Publish test and coverage results #1273

name: Publish test and coverage results
on:
workflow_run:
workflows: ["Run test suite"]
types:
- completed
jobs:
publish-test-results:
name: "Publish test and coverage results"
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion != 'skipped' && github.repository_owner == 'Uninett'
steps:
# Checking out the repo is necessary codecov/codecov-action@v5 to work properly
# Codecov requires source code to process the coverage file and generate coverage
# reports
- name: Checkout Code
uses: actions/checkout@v4
with:
ref: ${{ github.event.workflow_run.head_sha }}
- name: Download and Extract Artifacts
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: |
mkdir -p artifacts && cd artifacts
artifacts_url=${{ github.event.workflow_run.artifacts_url }}
gh api "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact
do
IFS=$'\t' read name url <<< "$artifact"
gh api $url > "$name.zip"
unzip -d "$name" "$name.zip"
done
- name: "Publish test results"
uses: EnricoMi/publish-unit-test-result-action@v2
with:
commit: ${{ github.event.workflow_run.head_sha }}
check_name: "Test results"
files: artifacts/**/*-results.xml
- name: Read PR number file
if: ${{ hashFiles('artifacts/extra/pr_number') != '' }}
run: |
pr_number=$(cat artifacts/extra/pr_number)
re='^[0-9]+$'
if [[ $pr_number =~ $re ]] ; then
echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV
fi
- name: Read base SHA file
if: ${{ hashFiles('artifacts/extra/base_sha') != '' }}
run: |
base_sha=$(cat artifacts/extra/base_sha)
re='[0-9a-f]{40}'
if [[ $base_sha =~ $re ]] ; then
echo "BASE_SHA=$base_sha" >> $GITHUB_ENV
fi
- name: Upload to Codecov
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
override_branch: ${{ github.event.workflow_run.head_branch}}
override_commit: ${{ github.event.workflow_run.head_sha}}
commit_parent: ${{ env.BASE_SHA }}
override_pr: ${{ env.PR_NUMBER }}