aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/test-results.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/test-results.yml')
-rw-r--r--.github/workflows/test-results.yml51
1 files changed, 51 insertions, 0 deletions
diff --git a/.github/workflows/test-results.yml b/.github/workflows/test-results.yml
new file mode 100644
index 0000000..65071cd
--- /dev/null
+++ b/.github/workflows/test-results.yml
@@ -0,0 +1,51 @@
+name: Publish test results
+
+on:
+ workflow_run:
+ workflows: ["CI"]
+ types:
+ - completed
+
+jobs:
+ publish-test-results:
+ runs-on: ubuntu-latest
+ if: github.event.workflow_run.conclusion != 'skipped'
+ steps:
+ - name: Download artifacts
+ uses: actions/github-script@v3.1.0
+ with:
+ script: |
+ var fs = require('fs');
+ var artifacts = await github.actions.listWorkflowRunArtifacts({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ run_id: ${{github.event.workflow_run.id }},
+ });
+ var matchArtifacts = artifacts.data.artifacts.filter((artifact) => {
+ return artifact.name == 'tests.xml' || artifact.name == 'event.json'
+ });
+ var count = matchArtifacts.length;
+ for (var i = 0; i < count; i++) {
+ var matchArtifact = matchArtifacts[i];
+ var download = await github.actions.downloadArtifact({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ artifact_id: matchArtifact.id,
+ archive_format: 'zip',
+ });
+ var name = matchArtifact.name;
+ var dest = name + '.zip'
+ fs.writeFileSync('${{github.workspace}}/' + dest, Buffer.from(download.data));
+ console.log("Downloaded", name, "as", dest);
+ }
+ - name: Extract test results
+ run: unzip tests.xml.zip
+ - name: Extract event payload
+ run: unzip event.json.zip
+ - name: Publish test results
+ uses: EnricoMi/publish-unit-test-result-action@v1
+ with:
+ commit: ${{ github.event.workflow_run.head_sha }}
+ event_file: event.json
+ event_name: ${{ github.event.workflow_run.event }}
+ files: tests.xml