From 872901a8b34d339e214b332482f1298d8c91af29 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Wed, 11 Oct 2023 10:55:51 +1000 Subject: [PATCH] Add github workflow to upload test failure markdown summary report as a comment to PRs when tests fail --- .github/workflows/run-tests.yml | 9 +++- .github/workflows/write_failure_comment.yml | 55 +++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/write_failure_comment.yml diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 12700042f270..46a3e77d656f 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -416,11 +416,18 @@ jobs: mkdir -p /tmp/minio_tests/test-bucket && chmod -R 777 /tmp/minio_tests docker-compose -f .docker/$DOCKERFILE run qgis-deps /root/QGIS/.docker/docker-qgis-test.sh $TEST_BATCH + - name: Save PR number to test report + if: ${{ failure() }} + env: + PR_NUMBER: ${{ github.event.number }} + run: | + echo $PR_NUMBER > qgis_test_report/pr_number + - name: Archive test results report if: ${{ failure() }} uses: actions/upload-artifact@v3 with: - name: test-results-${{ matrix.distro-version }}-qt${{ matrix.qt-version }} + name: test-results-qt${{ matrix.qt-version }} path: qgis_test_report clang-tidy: diff --git a/.github/workflows/write_failure_comment.yml b/.github/workflows/write_failure_comment.yml new file mode 100644 index 000000000000..ee148ea43520 --- /dev/null +++ b/.github/workflows/write_failure_comment.yml @@ -0,0 +1,55 @@ +name: Write test failure comment + +on: + workflow_run: + workflows: [🧪 QGIS tests] + types: + - completed + +jobs: + strategy: + matrix: + qt-version: [ 5, 6 ] + + on-failure: + download: + runs-on: ubuntu-latest + steps: + - name: 'Download artifact' + uses: actions/github-script@v6 + with: + script: | + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { + return artifact.name == "test-results-qt${{ matrix.qt-version }}" + })[0]; + let download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + let fs = require('fs'); + fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/test-results-qt${{ matrix.qt-version }}.zip`, Buffer.from(download.data)); + + - name: 'Unzip artifact' + run: unzip test-results-qt${{ matrix.qt-version }}.zip + + - name: 'Post test report markdown summary as comment on PR' + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + let fs = require('fs'); + let issue_number = Number(fs.readFileSync('./test-results-qt${{ matrix.qt-version }}')); + let body = String(fs.readFileSync('./summary.md')); + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue_number, + body: body + });