Analyze Test Results #2955
This file contains hidden or 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: Analyze Test Results | |
| on: | |
| workflow_run: | |
| workflows: [Validate] | |
| types: | |
| - completed | |
| permissions: {} | |
| jobs: | |
| test-results: | |
| name: Test Results | |
| runs-on: ubuntu-latest | |
| if: github.event.workflow_run.conclusion != 'skipped' | |
| permissions: | |
| checks: write | |
| # needed unless run with comment_mode: off | |
| pull-requests: write | |
| # only needed for private repository | |
| contents: read | |
| # only needed for private repository | |
| issues: read | |
| # required by download step to access artifacts API | |
| actions: read | |
| steps: | |
| - name: Download and Extract Artifacts | |
| env: | |
| GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
| run: | | |
| ls -alR | |
| mkdir -p artifacts && cd artifacts | |
| artifacts_url=${{ github.event.workflow_run.artifacts_url }} | |
| # Track processed artifact names to skip duplicates (API returns newest first) | |
| seen_file=$(mktemp) | |
| gh api --paginate "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact | |
| do | |
| IFS=$'\t' read name url <<< "$artifact" | |
| if [ "${name:0:12}" != "test-results" ] && [ "$name" != "event-file" ]; then | |
| continue | |
| fi | |
| # Skip if we've already processed an artifact with this name | |
| if grep -qxF "$name" "$seen_file" 2>/dev/null; then | |
| echo "Skipping duplicate artifact: $name" | |
| continue | |
| fi | |
| echo "$name" >> "$seen_file" | |
| gh api $url > "$name.zip" | |
| unzip -d "$name" "$name.zip" | |
| done | |
| rm -f "$seen_file" | |
| ls -alR | |
| - name: Check for event-file | |
| id: file_check | |
| run: | | |
| if [ -e artifacts/event-file/event.json ]; then | |
| echo "check_result=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "check_result=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Publish Test Results | |
| if: steps.file_check.outputs.check_result == 'true' | |
| uses: EnricoMi/publish-unit-test-result-action@v2 | |
| with: | |
| commit: ${{ github.event.workflow_run.head_sha }} | |
| event_file: artifacts/event-file/event.json | |
| event_name: ${{ github.event.workflow_run.event }} | |
| files: "artifacts/**/*.xml" |