From 06f587e8b72e79f63a8b6e19d77de4c8f3217b32 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 | 16 ++++- .github/actions/debug-wait/action.yaml | 3 +- .github/workflows/end2end.yaml | 58 ++++++++++++++++++- 3 files changed, 70 insertions(+), 7 deletions(-) diff --git a/.github/actions/archive-artifacts/action.yaml b/.github/actions/archive-artifacts/action.yaml index 9ac282393b..418dde4356 100644 --- a/.github/actions/archive-artifacts/action.yaml +++ b/.github/actions/archive-artifacts/action.yaml @@ -35,10 +35,20 @@ runs: - name: Publish test report uses: mikepenz/action-junit-report@v4 with: - check_name: ${{ inputs.stage}} + annotate_only: true + check_name: ${{ inputs.stage }} + job_summary: false report_paths: ${{ inputs.junit-paths }} continue-on-error: true + - name: Upload test reports + uses: actions/upload-artifact@v4 + with: + name: ${{ github.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 @@ -61,7 +71,7 @@ runs: 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; env: - STAGE: ${{ inputs.stage }} + STAGE: ${{ inputs.stage }}.${{ github.run_attempt }} continue-on-error: true - name: Dump kafka @@ -91,7 +101,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/actions/debug-wait/action.yaml b/.github/actions/debug-wait/action.yaml index 8549d78d51..f51e524971 100644 --- a/.github/actions/debug-wait/action.yaml +++ b/.github/actions/debug-wait/action.yaml @@ -6,11 +6,10 @@ runs: using: composite steps: - name: "Debug: SSH to runner" - uses: scality/actions/action-ssh-to-runner@1.8.0 + uses: scality/actions/action-ssh-to-runner@1.9.0 continue-on-error: true with: tmate-server-host: ${{ env.TMATE_SERVER_HOST }} tmate-server-port: ${{ env.TMATE_SERVER_PORT }} tmate-server-rsa-fingerprint: ${{ env.TMATE_SERVER_RSA_FINGERPRINT }} tmate-server-ed25519-fingerprint: ${{ env.TMATE_SERVER_ED25519_FINGERPRINT }} - if: job.status == 'failure' && runner.debug == '1' diff --git a/.github/workflows/end2end.yaml b/.github/workflows/end2end.yaml index 5f0f2fee8b..229067d895 100644 --- a/.github/workflows/end2end.yaml +++ b/.github/workflows/end2end.yaml @@ -416,6 +416,7 @@ jobs: - name: Debug wait uses: ./.github/actions/debug-wait timeout-minutes: 60 + if: failure() && runner.debug == '1' - name: Archive and publish artifacts uses: ./.github/actions/archive-artifacts with: @@ -475,6 +476,7 @@ jobs: - name: Debug wait uses: ./.github/actions/debug-wait timeout-minutes: 60 + if: failure() && runner.debug == '1' - name: Archive and publish artifacts uses: ./.github/actions/archive-artifacts with: @@ -526,6 +528,7 @@ jobs: - name: Debug wait uses: ./.github/actions/debug-wait timeout-minutes: 60 + if: failure() && runner.debug == '1' - name: Archive and publish artifacts uses: ./.github/actions/archive-artifacts with: @@ -565,6 +568,7 @@ jobs: - name: Debug wait uses: ./.github/actions/debug-wait timeout-minutes: 60 + if: failure() && runner.debug == '1' - name: Archive and publish artifacts uses: ./.github/actions/archive-artifacts with: @@ -611,6 +615,7 @@ jobs: - name: Debug wait uses: ./.github/actions/debug-wait timeout-minutes: 60 + if: failure() && runner.debug == '1' - name: Archive and publish artifacts uses: ./.github/actions/archive-artifacts with: @@ -635,11 +640,60 @@ 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.8.0 + uses: scality/actions/upload_final_status@1.9.0 with: 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'