Merge tests reports from "re-runs" to automatically ignore flaky test results#2354
Merge tests reports from "re-runs" to automatically ignore flaky test results#2354bert-e merged 8 commits intodevelopment/2.14from
Conversation
Hello francoisferrand,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
5e1dcd1 to
f6f5ab8
Compare
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
| - name: Run init CI test | ||
| run: bash run-e2e-test.sh "end2end" ${E2E_IMAGE_NAME}:${E2E_IMAGE_TAG} "end2end" "default" | ||
| working-directory: ./.github/scripts/end2end | ||
| continue-on-error: true |
There was a problem hiding this comment.
Can you explain the continue on error ?
Is it because it's required for the merging part to continue ?
There was a problem hiding this comment.
if we don't continue-on-error, the build will fail immediately on error: whatever we do after, we cannot "recover" the build and make it pass.
So on this run : I see the Run e2e ctst step is marked as if it passed, but with this pr, it will always be marked as passed even when there are failures, and instead we will have to look at the Archive step or the Summary to see what happened, is that correct ?
Only partially related to this pr, but might be an opportunity for that : The Archive artifact step is super long, usually around ~7000 lines, and it's super annoying to have to scroll down to find the artifact, could we find a way to either, significantly reduce the amount of printed lines on this step (i dont think whats printed is super useful). Or better, does github offers some kind of feature so that we can display the artifact url maybe in the step title with a variable or something ? Also, I just checked rapidly, we should be able to have this link be visible in the github summary, and I think we already kinda do it, but not sure this is correct because the 4 artifacts I see here are dockerbuilds, not exactly the kind of url that I usually use to download artifacts (https://artifacts.scality.net/builds/github:scality:Zenko:staging-f6f5ab8b81.build-iso-and-end2end-test.8791) 🤔 |
is this just about changing habits, or is there a real problem?
Not possible unfortunately. In order for the build to be able to success, we must ignore the the error (
Technically yes, but it has other drawbacks
|
VM is destroyed anyway at the end of the test. Issue: ZENKO-5142
- cache@v5 - checkout@v6 - create-github-app-token@v2 - login-action@v4 Issue: ZENKO-5142
f6f5ab8 to
2111b11
Compare
|
/after_pull_request=2357 |
Waiting for other pull request(s)The current pull request is locked by the after_pull_request option. In order for me to merge this pull request, run the following actions first: ➡️ Merge the
Alternatively, delete all the after_pull_request comments from this pull request. The following options are set: after_pull_request |
|
Ok for the response, yeah it will shift a bit the way we investigate errors, as I'm used to looking at the "run ctst" job directly, and also usually don't look at the summary. |
|
/approve |
Waiting for other pull request(s)The current pull request is locked by the after_pull_request option. In order for me to merge this pull request, run the following actions first: ➡️ Merge the
Alternatively, delete all the after_pull_request comments from this pull request. The following options are set: after_pull_request, approve |
| user: ${{ inputs.user }} | ||
| password: ${{ inputs.password }} | ||
| source: /tmp/artifacts | ||
| if: always() No newline at end of file |
There was a problem hiding this comment.
don't forget to add new lines 🙏
| @@ -0,0 +1,132 @@ | |||
| #!/usr/bin/env python3 | |||
There was a problem hiding this comment.
Should we have test somehow ?




In order to workaround flaky tests, the test command result will now be ignored. Instead, extra processing is done at the end of each job, in the archive-artifacts action:
mikepenz/action-junit-reportaction to compute the job status. We were already using it, and it has this functionality already AND knows how to handle such flaky tests (where there are multiple results for the same test).In addition, to give some visibility on these flaky test, the summary (which was already present) will now show the results form every attempt. This required running the
mikepenz/action-junit-reportaction twice though: once with the individual reports for building an easy to read report, and another time with the "merged" report to compute the job status. It looks like this:This approach does not solve/reduce flakiness, nor allow easily blacklisting some flaky test results; however it helps mitigate the worse case scenario, by statistically ensuring much faster convergence: as every attempt can only decrease the number of failed tests.
Instead of requiring all tests to pass in a single run (where probabilty can quickly degrade when multiple tests are flaky), we only require that each test passes once overall.
Issue: ZENKO-5142