You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.8 KiB
YAML
104 lines
3.8 KiB
YAML
name: ReportTestResults
|
|
on:
|
|
workflow_run:
|
|
workflows:
|
|
- PullRequest
|
|
types:
|
|
- completed
|
|
permissions:
|
|
contents: read
|
|
actions: read
|
|
checks: write
|
|
jobs:
|
|
Report:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: 'Add default settings to node calls'
|
|
shell: bash
|
|
run: |
|
|
#
|
|
# The later used dorny/test-reporter@v1 action can throw the following exception when enough tests have been
|
|
# executed:
|
|
# RangeError: Maximum call stack size exceeded
|
|
#
|
|
# We explicitly increase the stack max. stack size here to work around this issue.
|
|
#
|
|
|
|
which node
|
|
node --version
|
|
|
|
mv /usr/local/bin/node /usr/local/bin/node_org
|
|
echo '#!/bin/bash' >> /usr/local/bin/node
|
|
echo '/usr/local/bin/node_org --stack-size=4096 $@' >> /usr/local/bin/node
|
|
cat /usr/local/bin/node
|
|
chmod +x /usr/local/bin/node
|
|
|
|
which node
|
|
node --version
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ github.event.workflow_run.head_repository.full_name }}
|
|
ref: ${{ github.event.workflow_run.head_branch }}
|
|
fetch-depth: 1
|
|
# The dorny/test-reporter@v1 action doesn't support actions/upload-artifact@v4 yet.
|
|
# We therefore download the artifact manually and feed it to dorny/test-reporter@v1 as local files.
|
|
- name: 'Download Test Results'
|
|
id: DownloadTestResults
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
var allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
run_id: context.payload.workflow_run.id,
|
|
});
|
|
|
|
console.log('context.repo.owner = ' + context.repo.owner);
|
|
console.log('context.repo.repo = ' + context.repo.repo);
|
|
|
|
var artifacts = allArtifacts.data.artifacts.filter((artifact) => {
|
|
return artifact.name == "test-results";
|
|
});
|
|
|
|
if (artifacts.length > 0) {
|
|
var download = await github.rest.actions.downloadArtifact({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
artifact_id: artifacts[0].id,
|
|
archive_format: 'zip',
|
|
});
|
|
|
|
var fs = require('fs');
|
|
fs.writeFileSync('${{ github.workspace }}/test-results.zip', Buffer.from(download.data));
|
|
|
|
core.setOutput('hasTestResultsArtifact', 'true');
|
|
}
|
|
- name: 'Extract Artifact'
|
|
id: ExtractArtifact
|
|
if: steps.DownloadTestResults.outputs.hasTestResultsArtifact == 'true'
|
|
shell: pwsh
|
|
run: |
|
|
Expand-Archive test-results.zip -DestinationPath './test-results' -Force
|
|
dir -Recurse | Select-Object -ExpandProperty FullName
|
|
- name: 'Publish Test Report'
|
|
if: steps.ExtractArtifact.conclusion == 'success'
|
|
uses: dorny/test-reporter@v1
|
|
env:
|
|
#
|
|
# Can throw the following exception, when enough tests have been executed:
|
|
# FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
|
|
#
|
|
# We explicitly increase the max. heap size here to work around this issue.
|
|
#
|
|
NODE_OPTIONS: --max-old-space-size=8192
|
|
with:
|
|
name: 'All Tests'
|
|
# artifact: test-results
|
|
# use '**/*.trx' for artifact and 'test-results/**/*.trx' for local files
|
|
path: 'test-results/**/*.trx'
|
|
reporter: dotnet-trx
|
|
only-summary: 'true'
|
|
fail-on-error: 'false'
|
|
fail-on-empty: 'true'
|