Grcov is not working with codecov
wdanilo opened this issue · 7 comments
Hi!
Maybe I'm doing something wrong, but I spend a few hours trying to make it working, unfortunately without any luck. I don't have any errors - everything passes successfully. Could I ask you to confirm if this is a bug?
My repo's GitHub action config is here: https://github.com/luna/basegl/blob/master/.github/workflows/build.yml
And the build results are here:
https://github.com/luna/basegl/actions
As you can see, the coverage file gets generated and gets successfully passed to actions-rs/grcov. The codecov token is correct as well, however, codecov does not display any results and no errors are reported anywhere :( I'd be thankful for any hint here!
Hey!
Generated file does not has the .info
extension, as you could see in logs:
Generated coverage report at /tmp/grcov-report-kcud6n5lg3d
::set-output name=report,::/tmp/grcov-report-kcud6n5lg3d
Here, ::set-output name=report,::
is some metadata syntax used by Github Actions (let's just ignore it) and the /tmp/grcov-report-kcud6n5lg3d
is a full absolute path to the report file, you do not need to add anything to it, like you are doing here: https://github.com/luna/basegl/blob/2440f88c4a1f763a6ed82dffc584511521644147/.github/workflows/build.yml#L97
You should also check if the Docker container has an access to the /tmp
folder on the host, it might be the same issue as in #1.
Also, I'm strongly suggest you to immediately revoke the token, which is hardcoded in the workflow file right now, generate a new token and store it as an Action secret instead; codecov Action page has an example of how to use secrets
@svartalf First of all, thank you so much for such a fast reply!
Secondly, that's unfortunate - I added the ".info" prefix after asking the question to check if it is the case. I already removed it and hmm, I still dont understand what is happenning, but I know more, please see this build:
https://github.com/luna/basegl/commit/9b8a529793da591494847f25573d54ec43239a73/checks?check_suite_id=255062814
It contains two shell scripts, one listing all files in /tmp
, and the second printing the content of our file to screen. We can observe that the file is generated there, so that's cool. However, the content of the file seems to be only "TN:", which looks incorrect to me.
Regarding Docker access to /tmp
- it could definitely be the case. I will try to move the file back to .
and see what happens (I will move it because somehow the name in config is not used by grcov - please note that the repository has a grcov.yml config, but the file is still generated in /tmp: https://github.com/luna/basegl/blob/master/.github/actions-rs/grcov.yml )
Regarding the token, thanks for pointing it out. Of course, I'll re-generate it and put in secrets, it should not have been made public.
Ok, so @svartalf, it seems like you were right regarding the accesses. I modified the script so I'm copying the file from /tmp
to the local fs and it is now seen by codecov
❤️
However, the last problem remains - codecov
tells me "There was an error processing coverage reports.", so it seems like the generated file is incorrect. If that's true, it may be a bug of grcov rather than this repo – what do you think about it?
Still, here are some bugs in this plugin:
- The issue you have described should be mentioned in the main README for other people using this repo.
- The config file is not read properly (I had to move the file manually - see my previous post for explanation).
@svartalf Thank you once again for your assistance!
Well, considering that project crates found properly and the corresponding gcda
/gcno
files were generated by the rustc
:
Found project crates: basegl,basegl-backend-webgl,basegl-prelude,basegl-system-web
Archiving coverage file: /home/runner/work/basegl/basegl/target/debug/deps/basegl-67aff20e1676a7ba.gcda
Archiving coverage file: /home/runner/work/basegl/basegl/target/debug/deps/basegl-67aff20e1676a7ba.gcno
Archiving coverage file: /home/runner/work/basegl/basegl/target/debug/deps/basegl_prelude-5816b90801e3bf39.gcda
Archiving coverage file: /home/runner/work/basegl/basegl/target/debug/deps/basegl_prelude-5816b90801e3bf39.gcno
Archiving coverage file: /home/runner/work/basegl/basegl/target/debug/deps/basegl_prelude-66a9e69b50116db3.gcno
Coverage files archive was created at the /tmp/coverage-bq88ywk38mf.zip
my guess is that grcov
filters out all lines for some reasons. I recall that I had the similar issue in heim
recently, but it was postponed as being not so important at the moment.
There is a one interesting difference between the basegl
and heim
grcov.yml
files: mine is missing the filter: covered
line.
Maybe that's why grcov
is filtering out everything — it can't match code lines with the coverage information? Could you maybe try to remove that line temporary and see how it goes?
- I agree that this issue about the report path should be mentioned in README, but since it was discovered just today, I was not able to do it yet (but will try to find time tomorrow).
- As for config file path, I just found that I mismanaged a latest release (whoops!), but it was fixed already, so a simple workflow restart should start using the
output-file
setting properly.
@svartalf you were right again! Removing the line filter: covered
fixes the issues! Thank you so much for your fast help. Regarding the other topics:
- Oh, I did not notice that was discovered today as well!
- ❤️
I consider the current behavior with the filter: covered
line as incorrect, because it was working for me before on Azure CI, but apparently stopped working now with this Action, so it should be investigated later.
Works fine: #141 (#141 (comment))