-
Notifications
You must be signed in to change notification settings - Fork 217
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test result attached to a different workflow that is being run concurrently #512
Comments
|
Hello https://github.com/dorny/test-reporter?tab=readme-ov-file#github-limitations I found other github actions for TRX reports and they all mention the same. Only GitHub today "is allowed to create a check suite for each workwflow run and there is no public Check Suite API" [cit]. Take it or leave it ... |
Check this line https://github.com/dorny/test-reporter/blob/main/src/main.ts#L178 where the action uses the octokit client to create the check using the sha of the commit. Here the official API called to create the run: https://docs.github.com/en/rest/checks/runs?apiVersion=2022-11-28#create-a-check-run In the body there is no mention "of the workflow" and only name and head_sha are required. |
Also, this has never been solved on GitHub side: https://github.com/orgs/community/discussions/24616 |
I can't say for sure, but I might have a workaround, give it a try and see if it works: I added another step after the report step and now GHA is attaching to the correct workflow, it worked 3 times in a row, could be coincidence tho. Example- name: Test Report
uses: dorny/test-reporter@v1
with:
name: Unit Tests
path: 'test-results/*.xml'
reporter: java-junit
list-tests: none
max-annotations: '50'
- name: Random step
run: echo "Test" |
@peterbrendel - that didn't work for me. In our setup the master build runs on a cron job, and the test reports get appended to the original build that was merged back into master. |
[EDIT] Sorry, I just found tat you already have several duplicate issues to this one, like #67 and #224, so you know this problem well... I have the same issue and I suspect that the problem is somewhere here. The github API seems not used correctly as far as I can judge: export function getCheckRunContext(): {sha: string; runId: number} {
if (github.context.eventName === 'workflow_run') {
// should be "event_name" ?
core.info('Action was triggered by workflow_run: using SHA and RUN_ID from triggering workflow')
const event = github.context.payload
if (!event.workflow_run) {
throw new Error("Event of type 'workflow_run' is missing 'workflow_run' field")
}
return {
sha: event.workflow_run.head_commit.id,
runId: event.workflow_run.id
}
}
const runId = github.context.runId
// should be "run_id" ?
if (github.context.payload.pull_request) {
core.info(`Action was triggered by ${github.context.eventName}: using SHA from head of source branch`)
const pr = github.context.payload.pull_request as PullRequest
return {sha: pr.head.sha, runId}
}
return {sha: github.context.sha, runId}
} |
@ccpp are you able to confirm that this the workflow is the correct one with your patch? |
No, sorry, this is untested! @lneuhaus I even cannot reproduce the problem at the moment, probably since I switched to the artifact configuration. now the report is shown in the summary of the correct workflow |
What exactly do you mean by switched to the artifact configuration ? I've been fighting this issue on and off for a few days thinking it was something I had done wrong only to get looking for solutions and opening the can of worms that is multiples of bugs opened for this shortcoming of GitHub's. |
Hi @bt-abarber ,
I don't have the codebast at hand, but what I did was to save my .xml reports in artifacts, and to create a fresh job which picks up those reports using the |
Any update on a fix or workaround? |
@liyaka can you confirm that my approach works for you too ( #512 (comment) )? Then that would be the workaround you're looking for |
@ccpp I'm not quite sure what kind of job you have set up but I tired the following workflow (ok not literally this, but essentially this workflow) without any luck:
I'm sure I've missed something scrubbing the above example but essentially my workflow works, it generates the test summary reports as expected, but they're not visible within the workflow, they all get attached to the first instance of the workflow being run after I commit changes.... |
@bt-abarber almost, but don't use the "download artifact" action. Instead, use the "artifact:" statement of dorny/test-reporter, as documented https://github.com/dorny/test-reporter?tab=readme-ov-file#usage |
Unfortunately I'm still not having any luck:
Files are made in to an artifact as expected, the test_summary job opens them, sees them and generates its reports but the Summary results are still attached to the first instance of the commit for the workflow. |
@bt-abarber OK I guess I cannot help then. Last time I used this in a project it seemed to resolve the issue for me. name: Build
on: [push, workflow_dispatch]
jobs:
merge_conflict_check:
(...)
build_uwp_pass1:
(...)
steps:
(...)
- name: Test Project
run: .github/workflows/run-tests.ps1
- name: Upload Test Results
uses: actions/upload-artifact@v4
with:
name: Test-Results
path: TestResults
if: always()
(...)
check_test_result:
name: Test Report
needs: build_uwp_pass1
runs-on: ubuntu-latest
steps:
- name: Test Report
uses: dorny/test-reporter@1a288b62f8b75c0f433cbfdbc2e4800fbae50bd7
with:
name: Unity Test Results
artifact: Test-Results
path: ./*.xml
reporter: dotnet-nunit
fail-on-error: true
(...) |
Describe the bug
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Job should be attached to their respective workflows
Screenshots
Two different workflows
Last one does not contain the test result
First workflow to be triggered contained both the results
Additional context
I attempted to separate test results without using the custom action and explicitly added the test report script into separate workflows but still got the same issue.
The text was updated successfully, but these errors were encountered: