From 9cfaef0c7d6d8211821406640bda147142025056 Mon Sep 17 00:00:00 2001 From: Richard Webb Date: Sun, 29 Sep 2024 10:19:03 +0100 Subject: [PATCH 1/2] Publish the unit test results from the CI builds --- .github/workflows/build_and_test.yml | 6 ++++++ build.fsx | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c30a4d5b13f..f4c6d14c9e8 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -31,3 +31,9 @@ jobs: with: name: fake-artifacts-${{ matrix.os }} path: release/artifacts + - name: publish test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: test-results-${{ matrix.os }} + path: testresults diff --git a/build.fsx b/build.fsx index d1d39aaf949..8ceff850986 100644 --- a/build.fsx +++ b/build.fsx @@ -393,8 +393,10 @@ let callPaket wd args = /// Test assembly to run tests from /// Expecto test results XML file let runExpecto workDir dllPath resultsXml = + let resultsFile = "testresults" resultsXml + let processResult = - DotNet.exec (dotnetWorkingDir workDir) (sprintf "%s" dllPath) (sprintf "--nunit-summary %s" resultsXml) + DotNet.exec (dotnetWorkingDir workDir) (sprintf "%s" dllPath) (sprintf "--nunit-summary %s" resultsFile) if processResult.ExitCode <> 0 then failwithf "Tests in %s failed." (Path.GetFileName dllPath) From 843ba3931c9d1dec36fdfbf5a27200f1a6d59ed0 Mon Sep 17 00:00:00 2001 From: Richard Webb Date: Sun, 29 Sep 2024 10:46:40 +0100 Subject: [PATCH 2/2] Try publishing a test report in CI builds --- .github/workflows/build_and_test.yml | 10 +++++ .github/workflows/publish-test-results.yml | 47 ++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 .github/workflows/publish-test-results.yml diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index f4c6d14c9e8..0aa80b380a8 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -4,6 +4,16 @@ on: [push, pull_request] jobs: + event_file: # Used for test reporting + name: "Publish event file" + runs-on: ubuntu-latest + steps: + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: EventFile + path: ${{ github.event_path }} + build: runs-on: ${{ matrix.os }} diff --git a/.github/workflows/publish-test-results.yml b/.github/workflows/publish-test-results.yml new file mode 100644 index 00000000000..4f3b4e91681 --- /dev/null +++ b/.github/workflows/publish-test-results.yml @@ -0,0 +1,47 @@ +# This is used to publish test results to PRs so that we can support external forks + +name: Publish FAKE Test Results + +on: + workflow_run: + workflows: ["FAKE Build and Test"] + types: + - completed +permissions: {} + +jobs: + test-results: + name: Test Results + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion != 'skipped' + + permissions: + checks: write + pull-requests: write + actions: read + + steps: + # Download the Github event file + - name: Download Event file + uses: dawidd6/action-download-artifact@v4 + with: + run_id: ${{ github.event.workflow_run.id }} + path: artifacts + name: EventFile + + # Download all the test results files + - name: Download test results + uses: dawidd6/action-download-artifact@v4 + with: + run_id: ${{ github.event.workflow_run.id }} + path: test-results + pattern: test-results-* + + # Publish the test report + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + with: + commit: ${{ github.event.workflow_run.head_sha }} + event_file: artifacts/event.json + event_name: ${{ github.event.workflow_run.event }} + files: "test-results/**/*.xml"