From ef81e1fb37c14b1deaab0386a64b9f3c305c350f Mon Sep 17 00:00:00 2001 From: Francois Ferrand Date: Mon, 30 Sep 2024 10:58:06 +0200 Subject: [PATCH] Add test report once at the end of the build Issue: ZENKO-4876 --- .github/actions/archive-artifacts/action.yaml | 23 +++++--- .github/workflows/end2end.yaml | 53 ++++++++++++++++++- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/.github/actions/archive-artifacts/action.yaml b/.github/actions/archive-artifacts/action.yaml index 6d02f751d..06c158f23 100644 --- a/.github/actions/archive-artifacts/action.yaml +++ b/.github/actions/archive-artifacts/action.yaml @@ -15,7 +15,7 @@ inputs: required: true stage: description: Stage name - default: ${{ github.job }}.${{ github.run_attempt }} + default: ${{ github.job }} required: true trunk_token: description: Trunk token @@ -36,12 +36,19 @@ runs: uses: mikepenz/action-junit-report@v4 with: annotate_only: true - check_name: ${{ inputs.stage}} + check_name: ${{ inputs.stage }} report_paths: ${{ inputs.junit-paths }} - job_summary: ${{ job.status != 'success' }} # Only show the summary if the job failed - detailed_summary: true + job_summary: false continue-on-error: true + - name: Upload test reports + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.stage }}-test-report + path: ${{ inputs.junit-paths }} + overwrite: true + retention-days: 5 + - name: Upload results if: inputs.trunk_token && job.status != 'cancelled' uses: trunk-io/analytics-uploader@v1.4.0 @@ -64,8 +71,12 @@ runs: kubectl get zenkodrsink -A -o yaml > /tmp/artifacts/data/${STAGE}/kind-logs/all-zenkodrsinks.log kind export logs /tmp/artifacts/data/${STAGE}/kind-logs/kind-export tar zcvf /tmp/artifacts/${{ github.sha }}-${STAGE}-logs-volumes.tgz /tmp/artifacts/data/${STAGE}/kind-logs + + mkdir -p /tmp/artifacts/data/${STAGE}/tests + cp -r ${JUNIT_PATHS} /tmp/artifacts/data/${STAGE}/tests env: - STAGE: ${{ inputs.stage }} + STAGE: ${{ inputs.stage }}.${{ github.run_attempt }} + JUNIT_PATHS: ${{ inputs.junit-paths }} continue-on-error: true - name: Dump kafka @@ -95,7 +106,7 @@ runs: kcat -L -b ${KAFKA_SERVICE} -t {} -C -o beginning -e -q -J \ > /tmp/artifacts/data/${STAGE}/kafka-messages-{}.log" env: - STAGE: ${{ inputs.stage }} + STAGE: ${{ inputs.stage }}.${{ github.run_attempt }} NAMESPACE: ${{ inputs.zenko-namespace }} ZENKO_NAME: ${{ inputs.zenko-name }} continue-on-error: true diff --git a/.github/workflows/end2end.yaml b/.github/workflows/end2end.yaml index 5dcb1ddcb..e9fd84f51 100644 --- a/.github/workflows/end2end.yaml +++ b/.github/workflows/end2end.yaml @@ -640,6 +640,9 @@ jobs: - end2end-sharded - end2end-pra - ctst-end2end-sharded + if: always() + permissions: + checks: write steps: - name: Upload final status uses: scality/actions/upload_final_status@1.9.0 @@ -647,4 +650,52 @@ jobs: ARTIFACTS_USER: ${{ secrets.ARTIFACTS_USER }} ARTIFACTS_PASSWORD: ${{ secrets.ARTIFACTS_PASSWORD }} JOBS_RESULTS: ${{ join(needs.*.result) }} - if: always() + + - name: Download all workflow run artifacts + uses: actions/download-artifact@v4 + + - name: List test reports + run: | + REPORT_PATHS= + CHECK_NAMES= + for REPORT in *-test-report ; do + REPORT_PATHS="${REPORT_PATHS}\n${REPORT}/*.xml" + CHECK_NAMES="${CHECK_NAMES}\n${REPORT%-test-report}" + done + + echo -e "REPORT_PATHS<> "$GITHUB_ENV" + echo -e "CHECK_NAMES<> "$GITHUB_ENV" + + - name: Generate test summary + uses: mikepenz/action-junit-report@v4 + id: summary + with: + annotate_only: true # Do not generate a Check or summary + check_retries: true # Check for retries + job_summary: false # No job summary + report_paths: ${{ env.REPORT_PATHS }} + check_name: ${{ env.CHECK_NAMES }} + + - name: Publish summary + run: | + NO_ERROR='-No test annotations available-' + DETAILED_SUMMARY=${DETAILED_SUMMARY//$NO_ERROR} + FLAKY_SUMMARY=${FLAKY_SUMMARY//$NO_ERROR} + SUMMARY="${SUMMARY} ${DETAILED_SUMMARY} ${FLAKY_SUMMARY}" + + echo "${SUMMARY}" >> $GITHUB_STEP_SUMMARY + echo "SUMMARY=${SUMMARY}" >> $GITHUB_ENV + env: + SUMMARY: ${{ steps.summary.outputs.summary }} + DETAILED_SUMMARY: ${{ steps.summary.outputs.detailed_summary }} + FLAKY_SUMMARY: ${{ steps.summary.outputs.flaky_summary }} + + - name: Publish check with test results + uses: mikepenz/action-junit-report@v4 + with: + check_name: 🧪 Test results # Create a new aggregate check + job_summary: false # No job summary + summary: ${{ env.SUMMARY }} # Use the summary from the previous step (in the check) + report_paths: '*-test-report/*.xml' + update_check: ${{ github.run_attempt > 1}} # Update existing aggregate check on retry + job_name: 🧪 Test results # Need to specify the check_name in case of update